题目:给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。
思路:先正向遍历,得到前i个元素乘积的数组,再反向遍历,得到后i-1个元素乘积,一前一后相乘得到结果
优化点:双指针可少一次遍历
代码:
class Solution(object):
def productExceptSelf(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
res = [1]
helper = 1
for i in range(1, len(nums)+1):
res.append(res[i-1]*nums[i-1])
for i in range(len(nums)-1, -1, -1):
res[i+1] = res[i]*helper
helper *= nums[i]
return res[1:]