Description

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: GoLang

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
func productSiblings(nums int[]) []int {
    var res int[]
    tmp := 1
    for i := 0; i < len(nums); i++ {
        append(res, tmp)
        tmp *= nums[i]
    }
    tmp = 1
    for i := len(nums) - 1; i >= 0; i-- {
        res[i] *= tmp
        tmp *= nums[i]
    }
    return res
}


Solution: Python3

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
def productSiblings(nums):
    """
    :type nums: List[int]
    :rtype: List[int]
    """
    res = [1]*len(nums)
    tmp = 1
    for i in range(len(nums)):
        res[i] = tmp
        tmp *= nums[i]

    tmp = 1
    for i in range(len(nums) - 1, -1, -1):
        res[i] *= tmp
        tmp *= nums[i]
    
    return res