给定长度为 n 的整数数组 nums
,其中 n > 1,返回输出数组 output
,其中 output[i]
等于 nums
中除 nums[i]
之外其余各元素的乘积。
示例:
输入:[1,2,3,4]
输出:[24,12,8,6]
说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。
做到这里时间有点晚,脑袋有点不转,AC了以后发现自己虽然O(n)满足了,但是还是用了除法 =____=+。
啊……总之先记录一下代码和思路,回头再找不用除法的方法。。。
这种做法关键点在记录0的个数。
class Solution(object):
def productExceptSelf(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
plus = 1
plus2 = 1
cnt = 0
for num in nums:
if num!=0:
plus *= num
else: cnt+= 1
plus2 *= num
if cnt == len(nums):
plus = 0
print plus,plus2
res=[]
for num in nums:
if num==0 and cnt>1:
res.append(0)
elif num==0 and cnt==1:
res.append(plus)
else:
res.append(plus2/num)
return res