238. 除自身以外数组的乘积
题目描述:
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。
题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。
请不要使用除法,且在 O(n) 时间复杂度内完成此题。
考察重点:使用left,right分别记录左右累乘积,每个位置分别相当于左边累乘 与 右边累乘的积
func ProductExceptSelf(nums []int) []int {lennum, left, right := len(nums), 1, 1res := make([]int, lennum)for i := 0; i < lennum; i++ {res[i] = 1}for i := 0; i < lennum; i++ { //left, right 分别记录左右累乘,遍历完成,每个位置相当于被赋值了两次res[i] = res[i] * leftleft = left * nums[i]res[lennum-i-1] = res[lennum-i-1] * rightright = right * nums[lennum-i-1]}/**相当于for(int i=0;i<len;i++){output[i] = left;left *= nums[i];}for(int j=len-1;j>=0;j--){output[j] *= right;right *= nums[j];}*/return res
}