Daily Coding Problem 2

Today’s problem:

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?

My solution:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const productOfAllExceptI = (inputArray) => {
const returnArray = [];
for (let i = 0; i < inputArray.length; i++) {
let valToAdd = 1;
for (let j = 0; j < inputArray.length; j++) {
if (i !== j) {
valToAdd *= inputArray[j];
}
}
returnArray.push(valToAdd);
}
return returnArray;
}

console.log(productOfAllExceptI([1, 2, 3, 4, 5])); //[ 120, 60, 40, 30, 24 ]
console.log(productOfAllExceptI([3, 2, 1])); //[ 2, 3, 6 ]

Output:

1
2
3
➜ node productOfAllExceptI.js 
[ 120, 60, 40, 30, 24 ]
[ 2, 3, 6 ]