力扣第238题 除自身以外数组的乘积

思路
分为三种情况讨论。
第一种:nums里有两个以上的数字为0,那么,想都不用想,直接输出全是0的等长数组。因为不管当前的数字是几,其他数字的积总是等于0的。
第二种:就存在数字0小于2个的,那只要当前选中的数字不是0,那其他数字之积就是0,当前选中的是0的时候,那就是其他非0的数字之积了。
第三种:就没有什么好说的了,没有0,直接用积除以当前数字就好了
 
 
 
代码
```python3
class Solution:
    def productExceptSelf(self, nums: List[int]) -> List[int]:
        zero = 0
        ji = 1
        for i in nums:
            if i != 0:
                ji *= i # 记录非0的数字积
            else:
                zero += 1 # 记录数字0出现的次数
        if zero >= 2:
            return [0 for i in range(len(nums))] # 处理0次数大于2的情况
        out = []
        # 下面就是出现2次一下的情况了
        for i in nums:
            if i == 0:
                out.append(ji)
            elif zero > 0:
                out.append(0)
            else:
                out.append(ji//i)
        return out
posted @ 2020-06-05 00:00  tiananboke  阅读(200)  评论(0)    收藏  举报