NOTE
除自身以外数组的乘积
通过左右乘积数组计算除自身以外数组元素的乘积。
这是历史学习笔记,可能存在过时或不完整的理解。
1. 题目描述
给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。
2. 思路
- 思路一
- 分别计算左右乘积数组
- 左:
L[3] = a[0] * a[1] * a[2],即除去当前数a[3] - 右:
R[5] = a[6] * a[7] * a[8],即除去当前数a[5] - 结果即为
L[x]*R[x]
3. 实现
3.1. 双指针(夹逼法)
func productExceptSelf(nums []int) []int {
left := make([]int, len(nums))
left[0] = 1
for i := 1; i < len(nums); i++{
left[i] = left[i-1] * nums[i-1]
}
right := make([]int, len(nums))
right[len(nums)-1] = 1
for i := len(nums)-1; i > 0; i--{
right[i-1] = right[i] * nums[i]
}
res := make([]int, len(nums))
for i := 0; i < len(nums); i++ {
res[i] = left[i]*right[i]
}
return res
}
讨论
使用 GitHub 账号参与讨论,评论会保存在 GitHub Issues 中。在 GitHub 查看