136. 只出现一次的数字 - 力扣(LeetCode)
位运算:
java
class Solution {
public int singleNumber(int[] nums) {
int res = 0;
for(int num:nums){
res ^= num;
}
return res;
}
}
一个数和 0 做 ^ 运算等于本身:a^0 = a
一个数和其本身做 ^运算等于 0:a^a = 0
时间复杂度:O(N)
空间复杂度:O(1)
169. 多数元素 - 力扣(LeetCode)
摩尔投票:
java
class Solution {
public int majorityElement(int[] nums) {
//目前认为的最多的数
int candidate = 0;
//目前最多的数的统计
int count = 0;
for(int num:nums){
if(count == 0){
candidate = num;
}
if(candidate == num){
count++;
}
else{
count--;
}
}
return candidate;
}
}
时间复杂度:O(n)
空间复杂度:O(1)