除自身以外数组的乘积

题目链接: https://leetcode.cn/problems/product-of-array-except-self

解题方法:

  1. 分别计算每个元素的前缀乘积以及后缀乘积,再将每个数的前缀乘积与后缀乘积相乘

func productExceptSelf(nums []int) []int {
    length:=len(nums)
    left,right:=make([]int,length),make([]int,length)
    left[0]=1
    right[length-1]=1
    for i:=length-2;i>=0;i--{
        right[i]=right[i+1]*nums[i+1]
    }
    res:=make([]int,length)
    for i := 0; i < length; i++ {
		if i > 0 {
            // 求结果的同时计算前缀乘积
			left[i] = left[i-1] * nums[i-1]
		}
		res[i] = left[i] * right[i]
	}
    return res
}

复杂度分析:

  • 时间复杂度: O(n)O(n)nnnumsnums中元素的个数

  • 空间复杂度: O(n)O(n)

最后更新于