LeetCode讲解篇之238. 除自身以外数组的乘积
文章目录
- 题目描述
- 题解思路
- 题解代码
题目描述
题解思路
对于该题,我们可以先使用一个循环记录所有非零元素的乘积结果和非零元素的个数
- 如果非零元素个数为0,则非零元素的乘积除以数组对应位置的数字就是除自身以外的数组的乘积
- 如果非零元素个数为1,则当数组中对应位置数字为0时,该位置的除自身以外的数组乘积为非零元素的乘积,当数组对应位置数字不为时,该位置的除自身以外的数组乘积为0
- 如果非零元素个数大于等于2,则数组中所有位置的除自身以外的数组乘积为0
题解代码
class Solution:def productExceptSelf(self, nums: List[int]) -> List[int]:n = len(nums)s = 1zero = 0for i in range(n):if nums[i] == 0:zero += 1continues *= nums[i]if zero == 1:for i in range(n):nums[i] = s if nums[i] == 0 else 0elif zero > 1:for i in range(n):nums[i] = 0else:for i in range(n):nums[i] = s // nums[i]return nums