当前位置: 首页 > 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题的最后一道简单题啦,下面就要进军中等题咯,加油。

http://www.dtcms.com/a/12710.html

相关文章:

  • 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 枚举 新特性
  • SEAFARING靶场漏洞攻略
  • Playwright与Selenium的对比:谁是更适合你的自动化测试工具?
  • 随想录笔记-二叉树练习题
  • 基于微信小程序的宠物之家的设计与实现
  • 基于R语言的统计分析基础:使用SQL语句操作数据集
  • Gitlab实现多项目触发式自动CICD
  • 2024年华为9月4日秋招笔试真题题解
  • 多态(下)【C++】
  • HarmonyOS开发之模拟器地图点击无效问题
  • 实现实时Web应用,使用AJAX轮询、WebSocket、还是SSE呢??