/*
r: 表示当前存的数
c: 表示当前存储数的个数
遍历数组,当元素与r相等,c ++;
否则,消耗掉当前数的个数即c --;
由于某个数出现的次数大于剩余所有数出现次数的和,因此最终的r一定是要求的结果.
因为次数大于n/2不可能被消耗完.
*/
class Solution {
public int majorityElement(int[] nums) {
int r = 0, c = 0;
for (int num : nums) {
if (num == r) c ++;
else {
if (c == 0) {
r = num;
c = 1;
}
else {
c --;
}
}
}
return r;
}
}