用来寻找数组中超过一半此书出现的元素
核心思想就是抵消,如果某个元素出现次数超过数组总数量的一半,那么数组中两两不相同的数进行抵消,最后留下的元素就是所求元素。
class Solution {
public:
int majorityElement(vector<int>& nums) {
int major, counts = 0, n = nums.size();
for (int i = 0; i < n; i++) {
if (counts == 0) {
major = nums[i];
counts = 1;
}
else counts += (nums[i] == major) ? 1 : -1;
}
int s = 0,a=0;
for(;s< n;s++){
if(nums[s] == major) a++;
}
if(a > nums.size()/2) return major;
else return -1;
}
};