Product of Array Except Self


这题还是有点绕的,一开始很简单的相求出所有数字的乘积,在去根据0的数量算出结果,虽然违背了题目本意,但是勉强也算是一种方法吧。先放上只有答案符合的代码:

class Solution(object):
	"""docstring for Solution"""
	def productExceptSelf(self, nums):
		alls = 1
		all0 = 1
		zero = 0
		s = 0
		for num in nums:
			if num == 0:
				zero += 1
			else:  
				alls *= num
		outputs = []
		for num in nums:
			if zero == 1:
				if num == 0:
					outputs.append(alls)
				else:
					outputs.append(s)
			elif zero == 2:
				
				outputs.append(s)
			elif zero == 0:
				outputs.append(alls/num)
		return outputs

这段按照网站上提示的错误是有点奇怪的。可能是对除法的一种反制吧。


好了,下面放正确的代码:

#238
#https://leetcode.com/problems/product-of-array-except-self/description/
#2018.4.29
class Solution(object):
	"""docstring for Solution"""
	def productExceptSelf(self, nums):
		length = len(nums)
		p = 1
		outputs = []
		for num in nums:
			outputs.append(p)
			p *= num
		p = 1
		for i in range(length-1,-1,-1):
			outputs[i] *= p
			p *= nums[i]
		return outputs

其实只要正反乘两次就可以了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值