一、环境说明
- 本文是 LeetCode1822. 数组元素积的符号。
- 模拟。
- 测试环境:Visual Studio 2019。
二、思路分析
一次遍历统计负数个数,遇到
0
0
0
r
e
t
u
r
n
0
return 0
return0。
遍历结束,
负数数量
%
2
=
=
0
负数数量\%2==0
负数数量%2==0,则
r
e
t
u
r
n
return
return
1
1
1,否则
r
e
t
u
r
n
return
return
−
1
-1
−1。
三、代码展示
C++
class Solution {//一次遍历统计负数个数,遇到0 return 0。遍历结束,负数数量%2==0,则return 1,否则return -1。
public:
int arraySign(vector<int>& nums) {
int count=0;//统计负数
for(auto &x:nums){
if(0==x) return 0;
else if(x<0) count++;
}
if(0==count%2) return 1;
return -1;
}
};
C
int arraySign(int* nums, int numsSize){
int count=0;//统计负数
for(int i=0;i<numsSize;i++){
if(0==nums[i]) return 0;
else if(nums[i]<0) count++;
}
if(0==count%2) return 1;
return -1;
}
Java
class Solution {
public int arraySign(int[] nums) {
int count =0;
for(int x:nums){
if(0==x) return 0;
else if(x<0) count++;
}
if(0==count%2) return 1;
return -1;
}
}
四、博主致语
理解思路很重要!
欢迎读者在评论区留言,作为日更博主,看到就会回复的。
五、AC
六、复杂度分析
- 时间复杂度: O ( n ) O(n) O(n) , n n n是nums长度。一次遍历nums的时间复杂度是 O ( n ) O(n) O(n)。
- 空间复杂度: O ( 1 ) O(1) O(1),除了若干变量使用的常量空间,没有使用额外的线性空间。