找出拥有n个元素的数组中出现次数大于n/2的元素
思路:
采用两两抵消的方法,设置一个计数器count。
首先令temp等于第一次元素,count为1,
- 如果下一个元素和temp相等,则count++,
- 如果不相等,则count–。
如果count等于0,那么temp重新赋值为下一个元素
重复上面的步骤直到遍历完数组,则剩下的temp一定是数组中出现次数大于n/2的元素。
class Solution {
public:
int majorityElement(vector<int>& nums) {
int count = 0;
int temp = 0;
for (int i = 0; i < nums.size(); i++) {
if (count == 0) {
temp = nums[i];
count++;
}
else {
if (nums[i] == temp) count++;
else count--;
}
}
return temp;
}
};