跳转至

LC238 - 除自身外数组的乘积

ProductOfArrayExceptSelf.go
package Array

func productExceptSelf(nums []int) []int {
    prefixSum, suffixSum := make([]int, len(nums)), make([]int, len(nums))
    prefixSum[0], suffixSum[len(nums)-1] = nums[0], nums[len(nums)-1]
    for i := 1; i < len(nums); i++ {
        prefixSum[i] = prefixSum[i-1] * nums[i]
    }
    for i := len(nums) - 2; i >= 0; i-- {
        suffixSum[i] = suffixSum[i+1] * nums[i]
    }
    result := make([]int, len(nums))
    for i := 1; i < len(nums)-1; i++ {
        result[i] = prefixSum[i-1] * suffixSum[i+1]
    }
    result[0] = suffixSum[1]
    result[len(nums)-1] = prefixSum[len(nums)-2]
    return result
}