当前位置: 代码迷 >> 综合 >> LeetCode——169.多数元素【Boyer-Moore 投票算法】
  详细解决方案

LeetCode——169.多数元素【Boyer-Moore 投票算法】

热度:62   发布时间:2023-12-16 22:20:04.0

在这里插入图片描述


题解

在这里插入图片描述
在这里插入图片描述

  • 投票算法证明:

    • 如果候选人不是maj 则 maj,会和其他非候选人一起反对 会反对候选人,所以候选人一定会下台(maj==0时发生换届选举)
    • 如果候选人是maj , 则maj 会支持自己,其他候选人会反对,同样因为maj 票数超过一半,所以maj 一定会成功当选

AC-Code

class Solution {
    
public:int majorityElement(vector<int>& nums) {
    int candidate = -1;int count = 0;for (int num : nums) {
    if (num == candidate)++count;else if (--count < 0) {
    candidate = num;count = 1;}}return candidate;}
};