原题不让用除法,也就是不能先把数组中所有元素乘起来然后对单个元素进行除法运算得到结果。
这样解决思路就是,针对某个值,先遍历之前的数乘起来,再遍历之后的数乘起来。两者想乘就是当前值对应的输出。Python代码:
class Solution(object):
def productExceptSelf(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
res = [1] * len(nums)#初始化输出
#遍历之前的数
for i in range(1,len(nums)):
res[i] = res[i-1] * nums[i-1]
#遍历之后的数
reverse = 1
for j in range(0,len(nums))[::-1]:
res[j] = res[j] * reverse
reverse = reverse * nums[j]
#输出
return res