与T169得摩尔投票法不同,本题最后需要对结果进行一个判断:统计出现次数,是否存在主要元素才行。
class Solution {
// 与T169的略有不同,本题不保证有众数,所以最后需要判断是否存在主要元素
public int majorityElement(int[] nums) {
int nums_count = nums[0], count = 1;
for(int i = 1; i < nums.length; i++){
if(nums_count == nums[i]) ++count;
else if(-- count == 0){
nums_count = nums[i];
count = 1;
}
}
// 判断主要元素
int countRes = 0;
for(int i=0; i<nums.length; i++) // 统计出现次数
if(nums[i] == nums_count)
countRes++;
if(countRes > nums.length/2)
return nums_count;
return -1;
}
}