文章目录
- 题目描述
- 题解思路
- 题解代码
- 题目链接
题目描述
题解思路
这题主要有个关键点,就是元素能取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/