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

leetCode 229. 多数元素 II + 摩尔投票法 + 进阶 + 优化空间

229. 多数元素 II - 力扣(LeetCode)


给定一个大小为 的整数数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。

进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1)的算法解决此问题。 


(1)哈希表

class Solution {
public:// 哈希vector<int> majorityElement(vector<int>& nums) {unordered_map<int,int> mp;for(const int& a:nums) mp[a]++;int n = nums.size() / 3;int i=0;vector<int> ans;for(auto &it:mp) {if(it.second > n) ans.push_back(it.first); }return ans;}
};

(2) 摩尔投票法

class Solution {
public:// 摩尔投票法vector<int> majorityElement(vector<int>& nums) {// 创建返回值vector<int> res;if (nums.empty() || nums.size() == 0) return res;// 初始化两个候选人candidate,和他们的计票int cand1 = nums[0],count1 = 0;int cand2 = nums[0],count2 = 0;// 摩尔投票法,分为两个阶段:配对阶段 和 计数阶段// (1) 配对阶段for(const int &num : nums) {// 投票if(cand1 == num) {count1++;continue;}if(cand2 == num) {count2++;continue;}// 第 1 个候选人配对if(count1 == 0) {cand1 = num;count1++;continue;}// 第 2 个候选人配对if(count2 == 0) {cand2 = num;count2++;continue;}count1--;count2--;}// (2)计数阶段 : 找到了两个候选人之后,需要确定票数是否满足大于 N/3count1=0;count2=0;for(const int &num : nums) {if (cand1 == num) count1++;else if (cand2 == num) count2++;}if (count1 > nums.size() / 3) res.push_back(cand1);if (count2 > nums.size() / 3) res.push_back(cand2);return res;}
};

推荐和参考文章:

229. 多数元素 II - 力扣(LeetCode)icon-default.png?t=N7T8https://leetcode.cn/problems/majority-element-ii/solutions/123170/liang-fu-dong-hua-yan-shi-mo-er-tou-piao-fa-zui-zh/229. 多数元素 II - 力扣(LeetCode)icon-default.png?t=N7T8https://leetcode.cn/problems/majority-element-ii/solutions/1060343/gong-shui-san-xie-noxiang-xin-ke-xue-xi-ws0rj/

相关文章:

leetCode 229. 多数元素 II + 摩尔投票法 + 进阶 + 优化空间

229. 多数元素 II - 力扣&#xff08;LeetCode&#xff09; 给定一个大小为 n 的整数数组&#xff0c;找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。 进阶&#xff1a;尝试设计时间复杂度为 O(n)、空间复杂度为 O(1)的算法解决此问题。 &#xff08;1&#xff09;哈希表 class …...

5 个编写高效 Makefile 文件的最佳实践

在软件开发过程中&#xff0c;Makefile是一个非常重要的工具&#xff0c;它可以帮助我们自动化构建、编译、测试和部署。然而&#xff0c;编写高效的Makefile文件并不是一件容易的事情。在本文中&#xff0c;我们将讨论如何编写高效的Makefile文件&#xff0c;以提高我们的开发…...

20231028刷题记录

P3381 【模板】最小费用最大流 Portal. sol. 注意 SPFA 找最小费用增广路时不要到终点就返回&#xff0c;因为到终点的路径可能有多条不能确定哪条是费用最小的。 P2740 [USACO4.2] 草地排水Drainage Ditches Portal. 最大流模板。 注意区分 N , M N,M N,M。 CF609D G…...

39 深度学习(三):tensorflow.data模块的使用(基础,可跳)

文章目录 data模块的使用基础api的介绍csv文件tfrecord data模块的使用 在训练的过程中&#xff0c;当数据量一大的时候&#xff0c;我们纯读取一个文件&#xff0c;然后每次训练都调用相同的文件&#xff0c;然后进行处理是很不科学的&#xff0c;或者说&#xff0c;当我们需…...

css四种导入方式

1 行内样式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body> <h1 style"color: blue">我是标题</h1> </body> </htm…...

Linux学习第24天:Linux 阻塞和非阻塞 IO 实验(一): 挂起

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 在正式开始今天的笔记之前谈一下工作中遇见的一个问题。 本篇笔记主要学习Linux 阻塞和非阻塞 IO 实验&#xff0c;主要包括阻塞和非阻塞简介、等待队列、轮询、…...

037-第三代软件开发-系统音量设置

第三代软件开发-系统音量设置 文章目录 第三代软件开发-系统音量设置项目介绍系统音量设置QML 实现C 实现 总结一下 关键字&#xff1a; Qt、 Qml、 volume、 声音、 GPT 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt Meta-Obj…...

Python 自动化详解(pyautogui)

文章目录 1 概述1.1 第三方库&#xff1a;pyautogui1.2 坐标说明 2 操作对象2.1 鼠标2.1.1 定位2.1.2 移动2.1.3 拖动2.1.4 滚动2.1.5 点击 2.2 键盘2.2.1 输入2.2.2 按键2.2.3 快捷键 2.3 屏幕2.3.1 截图2.3.2 分辨率 2.4 信息提示2.4.1 提示框2.4.2 选择框2.4.3 密码输入2.4.…...

【Linux】第四站:Linux基本指令(三)

文章目录 一、时间相关的指令1.指令简介2.使用 二、cal指令三、find指令 -name1.介绍2.使用 四、grep指令1.介绍2.使用 五、zip/unzip指令1.介绍2.zip的安装3.使用 六、tar指令&#xff1a;打包解包&#xff0c;不打开它、直接看内容1.介绍2.使用 七、bc指令八、uname -r指令1.…...

SpringBoot内置工具类之断言Assert的使用与部分解析

先例举一个service的demo中用来验证参数对象的封装方法&#xff0c;使用了Assert工具类后是不是比普通的 if(xxx) { throw new RuntimeException(msg) } 看上去要简洁多了&#xff1f; 断言Assert工具类简介 断言是一个判断逻辑&#xff0c;用来检查不该发生的情况&#xff…...

如何检测租用的香港服务器是不是CN2线路呢?

CN2&#xff0c;是中国电信新一代融合承载网络&#xff0c;是为电信自身关键业务和具有QoS保证的SLA业务服务的&#xff0c;可以提供高性能的网络指 标&#xff0c;平均单向时延、最大单向时延、单向丢包率等均属于顶尖水平。简单地说&#xff0c;CN2和普通网络&#xff0c;就像…...

Spring Boot进阶(94):从入门到精通:Spring Boot和Prometheus监控系统的完美结合

&#x1f4e3;前言 随着云原生技术的发展&#xff0c;监控和度量也成为了不可或缺的一部分。Prometheus 是一款最近比较流行的开源时间序列数据库&#xff0c;同时也是一种监控方案。它具有极其灵活的查询语言、自身的数据采集和存储机制以及易于集成的特点。而 Spring Boot 是…...

Redis(02)| 数据结构-SDS

一、键值对数据库是怎么实现的&#xff1f; 在开始讲数据结构之前&#xff0c;先给介绍下 Redis 是怎样实现键值对&#xff08;key-value&#xff09;数据库的。 Redis 的键值对中的 key 就是字符串对象&#xff0c;而 value 可以是字符串对象&#xff0c;也可以是集合数据类型…...

HackTheBox-Starting Point--Tier 0---Preignition

文章目录 一 题目二 实验过程 一 题目 Tags Web、Custom Applications、Apache、Reconnaissance、Web Site Structure Discovery、Default Credentials译文&#xff1a;Web、定制应用程序、Apache、侦察、网站结构发现、默认凭证Connect To attack the target machine, you …...

售货机相关的电路

一、货道选通矩阵电路&#xff0c;类似扫描电路&#xff0c;驱动哪个电机&#xff0c;就打开相应的行线与列线输出 二、MDB纸币器&#xff0c;虽然现在国内都是手机支付&#xff0c;但如果机器还是外销国外还是有用 三、硬币器电路&#xff0c;投币与退币&#xff0c;脉冲信号…...

软考高项(十四)项目沟通管理 ★重点集萃★

&#x1f451; 个人主页 &#x1f451; &#xff1a;&#x1f61c;&#x1f61c;&#x1f61c;Fish_Vast&#x1f61c;&#x1f61c;&#x1f61c; &#x1f41d; 个人格言 &#x1f41d; &#xff1a;&#x1f9d0;&#x1f9d0;&#x1f9d0;说到做到&#xff0c;言出必行&am…...

Linux多线程服务端编程:使用muduo C++网络库 学习笔记 第五章 高效的多线程日志

“日志&#xff08;logging&#xff09;”有两个意思&#xff1a; 1.诊断日志&#xff08;diagnostic log&#xff09;。即log4j、logback、slf4j、glog、g2log、log4cxx、log4cpp、log4cplus、Pantheios、ezlogger等常用日志库提供的日志功能。 2.交易日志&#xff08;trasac…...

利用Pholcus框架提取小红书数据的案例分析

前言 在当今互联网时代&#xff0c;数据的获取和分析变得越来越重要。爬虫技术作为一种数据采集的方法&#xff0c;被广泛涉及各个领域。在本文中&#xff0c;我们将介绍如何使用Python Spark语言和Pholcus框架来实现一本小红书数据爬虫的案例分析。 开发简述 Go语言作为一种…...

超详细Hadoop安装教程(单机版、伪分布式)

超详细Hadoop安装教程&#xff08;单机版、伪分布式&#xff09; 1.Hadoop分布式系统基础架构介绍1.1.Hadoop核心 2.Hadoop安装教程2.1.环境准备2.2.配置用户ssh 免密登录2.3.JAVA环境的安装和配置2.4.Hadoop安装2.5.单机版Hadoop配置2.6.伪分布式Hadoop配置2.7Hadoop初始化 1.…...

持续集成部署-k8s-服务发现-Ingress

持续集成部署-k8s-服务发现-Ingress 1. Ingress 是什么2. Ingress 控制器3. 安装 Ingress-Nginx3.1 添加 Helm 仓库3.2 更新 Helm 仓库3.3 下载 Ingress-Nginx 安装包3.4 配置 Ingress-Nginx 配置文件参数3.5 安装 Ingress-Nginx1. Ingress 是什么 Ingress是 Kubernetes 中的一…...

终极指南:如何用QtAdb图形化工具轻松管理Android设备

终极指南&#xff1a;如何用QtAdb图形化工具轻松管理Android设备 【免费下载链接】QtAdb 项目地址: https://gitcode.com/gh_mirrors/qt/QtAdb 如果你曾经为复杂的adb命令头疼&#xff0c;或者厌倦了在终端中反复输入同样的调试指令&#xff0c;那么QtAdb就是为你量身定…...

Wespeaker:构建工业级说话人识别系统的完整解决方案

Wespeaker&#xff1a;构建工业级说话人识别系统的完整解决方案 【免费下载链接】wespeaker Research and Production Oriented Speaker Verification, Recognition and Diarization Toolkit 项目地址: https://gitcode.com/gh_mirrors/we/wespeaker 在现代智能语音系统…...

FNF-PsychEngine终极指南:5步掌握开源节奏游戏引擎

FNF-PsychEngine终极指南&#xff1a;5步掌握开源节奏游戏引擎 【免费下载链接】FNF-PsychEngine Engine originally used on Mind Games mod 项目地址: https://gitcode.com/gh_mirrors/fn/FNF-PsychEngine FNF-PsychEngine是一款专为Friday Night Funkin设计的开源游戏…...

抖音音频高效提取:用douyin-downloader提升自媒体人90%素材处理效率

抖音音频高效提取&#xff1a;用douyin-downloader提升自媒体人90%素材处理效率 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser f…...

激光线扫三维重建完整方案与Matlab代码实现

现整理了一套完整的&#xff0c;平移线扫重建 matlab代码和方案&#xff0c;包含相机标定、光平面标定与方案、移动装置标定与方案、激光线条中心线自适应提取、畸变矫正、三维重建、点云滤波等部分&#xff0c;代码按模块编写&#xff0c;注释完整&#xff0c;附带一份完整苹果…...

番茄小说下载器:一键将在线小说转为EPUB电子书

番茄小说下载器&#xff1a;一键将在线小说转为EPUB电子书 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 你是否遇到过网络信号不稳定时无法追更小说&#xff1f;是否担心喜欢…...

利用快马平台ai能力,五分钟快速生成springboot项目原型

作为一个Java开发者&#xff0c;每次启动新项目时最头疼的就是搭建基础框架。最近发现InsCode(快马)平台的AI生成功能&#xff0c;居然能五分钟搞定SpringBoot项目原型&#xff0c;简直打开了新世界的大门。 需求描述阶段 只需要在平台对话框输入"创建SpringBoot Web项目&…...

如何用猫抓构建智能命名系统:5个提升文件管理效率的技巧

如何用猫抓构建智能命名系统&#xff1a;5个提升文件管理效率的技巧 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在数字资源爆炸的时代&#xf…...

告别重复劳动:用快马ai自动生成cad图纸批量标注与导出脚本

作为一名经常和CAD图纸打交道的工程师&#xff0c;我深知标注尺寸这种重复性工作有多耗时。最近尝试用InsCode(快马)平台开发了个自动化工具&#xff0c;效果出乎意料地好&#xff0c;分享下具体实现思路&#xff1a; 需求分析 传统CAD标注需要逐个选中图形手动添加尺寸线&…...

Phi-3-mini-4k-instruct-gguf行业应用:电力调度日志摘要、故障报告标准化生成

Phi-3-mini-4k-instruct-gguf行业应用&#xff1a;电力调度日志摘要、故障报告标准化生成 1. 电力行业面临的文本处理挑战 电力调度中心每天产生大量运行日志和故障记录&#xff0c;传统人工处理方式面临三大痛点&#xff1a; 信息过载&#xff1a;单日日志量可达数万字&…...