leetCode 169. 多数元素 + 摩尔投票法

169. 多数元素 - 力扣(LeetCode)


给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 

大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。


leetCode 169. 多数元素 + 摩尔投票法_第1张图片


class Solution {
public:
    int majorityElement(vector& nums) {
        int cand1=0,votes=0;
        for(const int& num:nums) {
            if(votes == 0) cand1 = num;
            // if(cand1 == num) votes++;
            // else votes--;
            votes += (cand1 == num) ? 1 : -1;
        }
        return cand1;
    }
};

k值摩尔投票法:(推导看我的往期文章)leetCode 229. 多数元素 II + k值摩尔投票法 + 进阶 + 优化空间-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/weixin_41987016/article/details/134097586?spm=1001.2014.3001.5501

class Solution {
public:
    // k值摩尔投票法
    int k=2;
    int majorityElement(vector& nums) {
        // 创建返回值
        vector res;
        // if (nums.empty() || nums.size() == 0) return res;
        if (nums.size() == 1) return nums[0];
        int n = k-1, m = 2, cands[n][m];
        memset(cands, 0, sizeof(cands));
        for(int i=0;i nums.size() / k ) res.push_back(cands[i][0]);
        }
        return res[0];//这里因为题目要求返回int,有需要可以返回vector
    }
};

我的往期文章:

LCR 158. 库存管理 II 哈希 / 摩尔投票法-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/weixin_41987016/article/details/134094319?spm=1001.2014.3001.5501

你可能感兴趣的:(摩尔投票法,leetCode,leetcode,摩尔投票法,k值摩尔投票法)