Skip to content

Instantly share code, notes, and snippets.

@vinnymac
Created September 16, 2019 21:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vinnymac/869bd62c75ef50e7a9e67f90dd44a1c2 to your computer and use it in GitHub Desktop.
Save vinnymac/869bd62c75ef50e7a9e67f90dd44a1c2 to your computer and use it in GitHub Desktop.
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]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment