{{ message }}

Instantly share code, notes, and snippets.

Created Sep 16, 2019
Daily Coding Problem #2

# Problem 2

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?

 function getFactors(array) { let accumulation = 1 const right_products = [] for (let number of array) { accumulation *= number right_products.push(accumulation) } accumulation = 1 const left_products = [] for (let i = array.length - 1; i >= 0; i--) { accumulation *= array[i] left_products.unshift(accumulation) } const result = [] for (let i = 0; i < array.length; i++) { if (i === 0) { result.push(left_products[1]) } else if (i === array.length - 1) { result.push(right_products[i - 1]) } else { result.push(right_products[i - 1] * left_products[i + 1]) } } return result } // getFactors([1, 2, 3, 4, 5]) -> [120, 60, 40, 30, 24] // getFactors([3, 2, 1]) -> [2, 3, 6]