问题:https://leetcode.com/problems/majority-element/
Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.
分析:如果元素出现次数超过了一半,它是占大多数的值。用一个result代表这个值,遍历数组,设当前的值为result,并计数count=1;下一个值如果等于它,则count+1;否则count-1。count=0时就说明这个值不是多的值,再令遍历到这个时候的那个元素值为result。如果有超过一半次数的元素,那它最后的count一定非0。
代码:
class Solution {
public:
int majorityElement(vector<int>& nums) {
int l=nums.size();
int result;
int count=0;
for(int i=0;i<l;i++){
if(count==0){
result=nums[i];
count=1;
}
else{
if(result==nums[i]){
count+=1;
}
else{
count-=1;
}
}
}
return result;
}
};