https://leetcode.com/problems/majority-element/
此题多垃圾解,最优解显然。另有一较有意思解法,位运算。供参考。
最优解:
public class Solution {
public int majorityElement(int[] nums) {
int count = 1;
int res = nums[0];
for (int i = 1; i < nums.length; i++) {
if (count == 0) {
res = nums[i];
count++;
} else if (res != nums[i]) {
count--;
} else {
count++;
}
}
return res;
}
}
位运算:
public class Solution {
public int majorityElement(int[] nums) {
int res = 0;
for (int i = 0, mask = 1; i < 32; i++, mask <<= 1) {
int bitCount = 0;
for (int j = 0; j < nums.length; j++) {
if ((mask & nums[j]) != 0) {
bitCount++;
}
if (bitCount > nums.length / 2) {
res |= mask;
break;
}
}
}
return res;
}
}