小工具知识网

当前位置: 首页 > 行业知识 > leetcode169. 多数元素的四种解法

行业知识

leetcode169. 多数元素的四种解法

2026-11-02 07:23:48 来源:互联网转载

leetcode169. 多数元素

()

题目描述

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

()

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

1.哈希

class Solution {public:    int majorityElement(vector& nums) {        int count = nums.size()/2; //获取数组大小的一半        unordered_map hashTable; //        for(int i = 0; i  count){                return nums[i];            }        }        return 0;    }};

hash代码简化版

class Solution {public:    int majorityElement(vector& nums) {        unordered_map  mp;        for(int n:nums)               if(++ mp[n] > nums.size()/2)   return n;                 return -1;    }};

2.Moore投票(最优解)

摩尔投票法,投我++,不投–,超过一半以上的人投我,那我稳赢哇

class Solution {public:    int majorityElement(vector& nums) {        int candidate = 0, votes = 0;        for(int n : nums)        {            if(votes == 0)  candidate = n;              if(n == candidate)  ++votes;            if(n != candidate)  --votes;        }        return candidate;    }};

3.排序

class Solution {public:    int majorityElement(vector& nums) {        sort(nums.begin(), nums.end());        return nums[nums.size() / 2];               //因为出现频率大于n/2,所以排序后的中间位置必然是众数    }};

4.位运算

class Solution {public:    int majorityElement(vector& nums) {    int res = 0;    for(int i = 0 ; i > i) & 1;              //位运算法统计每个位置上1出现的次数,每次出现则ones+1        res += (ones > nums.size()/2) 

上一篇:怎么通过ip进入方舟服务器?

下一篇:网易战网怎么转服务器?