这道题要我们找出一个数组中,数量过半的数,这题的做法项脑筋急转弯,直接记过就好
这里我们定义两个变量,一个r存当前数,一个c是当前数的数量,
接下来我们遍历整个数组,如果我们遍历的数和存的数相当,就让c+1,否则就让c-1,当c==0时就把存的数替换成但前遍历的数。
步骤一:
1.定义两个变量r,c.... r表示当前存的数,c表示当前存的数的数量
2.遍历整个数组,如果c=0,就把当前数替换存的数
2.如果当前数与存的数相等就让c++,否则让c--;
class Solution {
public:
int majorityElement(vector<int>& nums) {
int r,c=0;
for(auto a:nums){
if(!c)r=a,c++;
else if(r!=a)c--;
else c++;
}
return r;
}
};