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  阅读(100)  评论(0编辑  收藏  举报

导航