除自身以外数组的乘积

55 阅读1分钟

题目链接:leetcode.cn/problems/pr…

题解

func productExceptSelf(nums []int) []int {
    var result = make([]int, len(nums))
    result[0] = 1

    for i := 1; i < len(nums); i++ {
       result[i] = result[i-1] * nums[i-1]
    }

    var post = 1
    for i := len(nums) - 2; i >= 0; i-- {
       post *= nums[i+1]

       result[i] *= post
    }

    return result
}

要点

  • 先计算每位的前缀乘积,然后再从后往前遍历数据,乘以每一位的后缀乘积。