简单题,做过就会
可以知道对于那个多数元素来说,其他所有元素加起来的数量与没有他多。因此,只需要遍历一次数组,记录当前数量最多的元素,并记录数量。遍历的过程中,如果遇到与当前记录的元素一样的就令数量加一,如果不同就减一。如果减到零了,就把当前记录的元素换成新的元素。遍历结束后,最后胜出者一定是最多的那个元素
class Solution {
public int majorityElement(int[] nums) {
int ans = nums[0], n = 1;
for(int i = 1; i < nums.length; i++){
if(nums[i] != ans){
if(n > 1)
n --;
else{
ans = nums[i];
}
}else
n ++;
}
return ans;
}
}