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?
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)
}