moore voting algorithm for majority element in vector
class Solution {
public:
int majorityElement(vector<int> &num) {
int majorityIndex = 0;
for (int count = 1, i = 1; i < num.size(); i++) {
//遍历一遍vector<int> &num中的元素
//相等的num[majorityindex]==num[i]
//初始时,一个主元素的候选,count=1,majorindex = 0
//如果count=0时,证明找到了一组不同的元素,同时减去,随机一个新元素,i+1 / i都可以
//一起切掉包含的两个元素,转化为子问题。出口为,这个元素为子序列的majority element
num[majorityIndex] == num[i] ? count++ : count--;
if (count == 0) {
i++;
majorityIndex = i;
count = 1;
}
}
return num[majorityIndex];
}
};
posted on 2017-11-28 14:39 flyingwaters 阅读(102) 评论(0) 编辑 收藏 举报