
思路:模拟
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(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(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(1)
总结
- 简单模拟,最大的收获大概就是练习rust的iter函数了吧