题目链接
投票法(不一定非要按照这种做法,但是这种做法效率最高),感觉如果之前没见过,现场去想这种做法还是不现实的,现在记录一下
思路
可以这样理解这个问题:我们要得到的数相当于“水晶”,其他的数相当于消耗水晶的物品,因为水晶个数大于一半,所以无论最终怎么消耗,剩下的还是水晶。具体见下代码。
class Solution {
public:
int majorityElement(vector<int>& nums) {
int n = nums.size();
int x = 0, vote = 0;
for (auto item : nums) {
if (!vote) x = item;
vote += (x == item ? 1 : -1);
}
return x;
}
};