给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。
样例
给出数组[1,1,1,1,2,2,2],返回 1
挑战
要求时间复杂度为O(n),空间复杂度为O(1)
一刷ac
解题思路:利用贪心的思想,每次比较nums中取出的数和major是否一致,然后操作count,一旦count 为0,就重置major。
public class Solution {
/**
* @param nums: a list of integers
* @return: find a majority number
*/
public int majorityNumber(ArrayList<Integer> nums) {
if(nums == null || nums.size() == 0) return 0;
int major = nums.get(0);
int count = 1;
for(int i = 1; i < nums.size(); i++){
if(nums.get(i) != major){
count--;
}else count++;
if(count == 0){
major = nums.get(i);
count = 1;
}
}
return major;
}
}