codingdojo

Daily Coding Problem: Problem #2 [Hard]

Good morning! Here's your coding interview problem for today.

This problem was asked by Uber.

Given an array of integers, return a new array such that each element at index i of the new array is the product of all the numbers in the original array except the one at i.

For example, if our input was [1, 2, 3, 4, 5], the expected output would be [120, 60, 40, 30, 24]. If our input was [3, 2, 1], the expected output would be [2, 3, 6].

Follow-up: what if you can't use division?

Solution

fun main() { val initialList = listOf(1, 2, 3, 4, 5) val expectedResult = listOf(120, 60, 40, 30, 24) var partialList = initialList.toMutableList()

//prepare the partial mutable list setting all its values to 1

for(i in partialList.indices){ partialList[i]=1}

//logic
for(i in initialList.indices){
    for(j in partialList.indices){
        if(i!=j){
            partialList[i] *= initialList[j]
        }
    }
}
val generatedList = partialList

//Result
println(expectedResult)
println(generatedList)

}