每日一题:除去自身以外的数组的乘积

AI摘要
【知识分享】该内容为Go语言编程技术分享,展示了两种实现LeetCode第238题“除自身以外数组的乘积”的算法方案。第一种使用左右双数组记录前缀积与后缀积,时间复杂度O(n),空间复杂度O(n);第二种为优化版本,仅使用单个结果数组并配合滚动变量,将空间复杂度降至O(1)。代码逻辑清晰,注释明确,属于常见算法题解讨论,无违规风险。
func productExceptSelf(nums []int) []int {
    n := len(nums)
    left := make([]int,n+1)
    right := make([]int,n+1)

    left[0] = 1
    for i := 0 ; i < n ; i ++{
        left[i+1] = left[i] * nums[i] 
    }

    right[n-1] = 1
    for i := n - 2 ; i >= 0 ; i --{
        right[i] = right[i+1] * nums[i+1]
    }

    ans := make([]int,n)
    for i := 0 ; i < n; i ++{
        ans[i] = left[i] * right[i]
    }
    return ans
}
``````go
func productExceptSelf(nums []int) []int {
   //优化版本 只用一个数组
   n := len(nums)
   ans := make([]int,n)

   ans[0] = 1
   for i := 1 ; i < n ; i ++{
    ans[i] = ans[i-1] * nums[i-1]
   }

   rightV := 1
   for i := n-1; i >= 0 ; i --{
    ans[i] = rightV * ans[i]
    rightV = rightV * nums[i]
   }
   return ans

}
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!