Rust 力扣 - 238. 除自身以外数组的乘积

文章目录

题目描述

题解思路

这题主要有个关键点,就是元素能取0,然后我们分类讨论元素为0的数量

  • 如果数组中存在至少两个元素为0,则每个元素的除自身以外的乘积为0
  • 如果数组中仅存在一个0,则为0的这个元素对应的除自身以外的乘积为数组中所有非0元素的乘积,其它元素的除自身以外的乘积为0
  • 如果数组中不存在0,则每个元素的除自身以外的乘积为所有元素的乘积除以自身元素

题解代码

rust 复制代码
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/

相关推荐
三花聚顶<>几秒前
310.力扣LeetCode_ 最小高度树_直径法_DFS
算法·leetcode·深度优先
mit6.8249 分钟前
[VT-Refine] 仿真平台 | Isaac Gym引擎 | easysim-envs配置
算法
温柔一只鬼.18 分钟前
Java数组
java·开发语言·算法
努力学算法的蒟蒻20 分钟前
day04(11.2)——leetcode面试经典150
算法·leetcode
Giant10023 分钟前
小白也能懂!跨域问题到底是啥,咋解决?
后端
用户905558421480525 分钟前
Milvus源码分析:写流程
后端
仟濹28 分钟前
「经典图形题」集合 | C/C++
c语言·开发语言·c++
熊猫_豆豆33 分钟前
MATLAB水滴下落湖水面泛起涟漪仿真
开发语言·matlab·水滴仿真
易元34 分钟前
Spring 应用记录(Bean的注册与注入机制)
spring boot·后端
Hooomeey38 分钟前
深度解析线程与线程池:从 OS 调度内核到 Java 并发架构的演进逻辑
java·后端·架构