文章目录
- 题目描述
- 题解思路
- 题解代码
- 题目链接
题目描述
题解思路
这题主要有个关键点,就是元素能取0,然后我们分类讨论元素为0的数量
- 如果数组中存在至少两个元素为0,则每个元素的除自身以外的乘积为0
- 如果数组中仅存在一个0,则为0的这个元素对应的除自身以外的乘积为数组中所有非0元素的乘积,其它元素的除自身以外的乘积为0
- 如果数组中不存在0,则每个元素的除自身以外的乘积为所有元素的乘积除以自身元素
题解代码
impl Solution {pub fn product_except_self(nums: Vec<i32>) -> Vec<i32> {let mut sum = 1;let mut zero_count = 0;for num in &nums {if *num != 0 {sum *= num;} else {zero_count += 1; }}let mut ans = vec![0; nums.len()];if zero_count > 1 {return ans;}if zero_count == 1 {for i in 0..nums.len() {if nums[i] == 0 {ans[i] = sum;return ans;}}}for i in 0..nums.len() {ans[i] = sum / nums[i];}ans}
}
题目链接
https://leetcode.cn/problems/product-of-array-except-self/