当前位置: 首页 > news >正文

C++速通LeetCode简单第20题-多数元素

方法一:暴力解法,放multiset中排序,然后依次count统计,不满足条件的值erase清除。 

class Solution {
public:
    int majorityElement(vector<int>& nums) {
        int ans = 0;
        multiset<int> s;
        for(int i = 0;i < nums.size(); i++)
        {
            s.insert(nums[i]);
        }
        for(multiset<int>::iterator it = s.begin();it != s.end();it++)
        {
            if(s.count(*it) > nums.size() >> 1)
            {
                ans = *it;
                break;
            }
            else s.erase(*it);//消除不是最多的重复元素,提高效率
            it = s.begin();//迭代器转到消除后的第一个元素
        }
        return ans;
    }
};

方法二:最优解法,摩尔投票法,转换为投票选举问题,最后票数多的为答案。

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;
    }
};

纪念:这是100题的最后一道简单题啦,下面就要进军中等题咯,加油。

相关文章:

  • Java基础-反射
  • MySQL之安装与基础知识
  • 【贪心算法】贪心算法
  • 自动化抢票 12306
  • STL-vector练习题
  • python Open3D 验证安装崩溃
  • 认识原码反码补码
  • C# 入坑JAVA 潜规则 大小写敏感文件名和类名 枚举等 入门系列2
  • Machine Learning: A Probabilistic Perspective 机器学习:概率视角 PDF免费分享
  • Vite + Electron 时,Electron 渲染空白,静态资源加载错误等问题解决
  • 华为SMU02B1智能通信电源监控单元模块简介
  • LabVIEW机械手视觉引导系统
  • RedisTemplate操作ZSet的API
  • C/C++语言基础--从C到C++的不同(上)
  • 面试题总结(三) -- 内存管理篇
  • 微信小程序----日期时间选择器(自定义时间精确到分秒)
  • 应用层协议HTTP介绍
  • PostgreSQL - tutorial
  • 前端基础知识+算法(一)
  • Java 枚举 新特性
  • 习近平同巴西总统卢拉共同出席合作文件签字仪式
  • 检疫期缩减至30天!香港优化内地进口猫狗检疫安排
  • 何立峰:中方坚定支持多边主义和自由贸易,支持世贸组织在全球经济治理中发挥更大作用
  • 礼来公布头对头研究详细结果:替尔泊肽在所有减重目标中均优于司美格鲁肽
  • 菲律宾举行中期选举
  • 巴基斯坦称对印度发起军事行动