Java&C++题解与拓展——leetcode1822.数组元素积的符号【么的新知识】

88 阅读1分钟
每日一题做题记录,参考官方和三叶的题解

题目要求

image.png

思路:模拟

  • 因为只需要判断符号,所以就直接记录符号就好了。

Java

class Solution {
    public int arraySign(int[] nums) {
        int res = 1;
        for (int n : nums) {
            if (n == 0)
                return 0;
            if (n < 0)
                res *= -1;
        }
        return res;
    }
}
  • 时间复杂度:O(n)O(n)
  • 空间复杂度:O(1)O(1)

C++

class Solution {
public:
    int arraySign(vector<int>& nums) {
        int res = 1;
        for (int n : nums) {
            if (n == 0)
                return 0;
            if (n < 0)
                res *= -1;
        }
        return res;
    }
};
  • 时间复杂度:O(n)O(n)
  • 空间复杂度:O(1)O(1)

Rust

impl Solution {
    pub fn array_sign(nums: Vec<i32>) -> i32 {
        if nums.contains(&0) {
            0
        }
        else {
            nums.iter().fold(1, |res, & n|
                if n > 0 {
                    res
                }
                else {
                    res * -1
                })
        }
    }
}
  • 时间复杂度:O(n)O(n)
  • 空间复杂度:O(1)O(1)

总结

  • 简单模拟,最大的收获大概就是练习rust的iter函数了吧

欢迎指正与讨论!