从当前元素继续寻找_169. 多数元素

8735986765eb52f52b3dc5242ff629cf.png

169. 多数元素

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

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

示例1:

输入: [3,2,3]
输出: 3

示例2:

输入: [2,2,1,1,1,2,2]
输出: 2

来源:力扣(LeetCode) 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解:

本题利用HashMap和经过排序后返回的中位数就是众数其实都比较好像,这个摩尔投票法真的秀的人头皮发麻,这里依次记录三种解法。

具体代码如下:

利用HashMap:

class Solution {public int majorityElement(int[] nums) {int num = nums.length / 2;int result = 0;Map<Integer, Integer> map = new HashMap<>();//先遍历一边数组,将元素作为Key,元素出现次数作为Valuefor (int i = 0; i < nums.length; i++) {map.put(nums[i], map.getOrDefault(nums[i], 0) + 1);}//题目说明只有一个数出现次数大于数组长度一半,找到直接返回即可Set<Map.Entry<Integer, Integer>> entries = map.entrySet();for (Map.Entry<Integer, Integer> entry : entries) {if (entry.getValue() > num) {result = entry.getKey();break;}}return result;}
}

利用排序后中位数即是众树:

class Solution {public int majorityElement(int[] nums) {Arrays.sort(nums);return nums[nums.length / 2];}
}

利用摩尔投票法:

摩尔投票法有两个推论

  • 若记 众数 的票数为 +1 ,非众数 的票数为 −1 ,则一定有所有数字的 票数和 >0
  • 若数组的前
    个数字的 票数和 =0 ,则 数组剩余
    个数字的 票数和一定仍 >0 ,即后
    个数字的 众数仍为

所以,我们可以从第一个元素开始,假定第一个元素就是众数,我们每次遇到这个元素就+1​,其他元素就-1,如果votes==0,利用推论可以弃掉前面的元素,重新以当前元素开始,假定当前元素为众数继续向后遍历,最后返回x即是该数组众数。

class Solution {public int majorityElement(int[] nums) {int x = 0, votes = 0;for (int num : nums) {if (votes == 0) x = num;votes += num == x ? 1 : -1;}return x;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523598.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windiws环境安装轻量级文件服务器ftpserver

Windiws环境安装轻量级文件服务器ftpserver 文章目录1. 在线下载&#xff1a;2. 解压3. 以管理员身份运行4. 启动5. 浏览器验证6. 输入账号和口令7. 创建测试文件8. 验证效果图1. 在线下载&#xff1a; 点击即可下载&#xff1a;http://learning.happymmall.com/ftpserver/FTP…

python的程序格式框架_关于Python程序格式框架的描述,以下选项中错误的是

关于组成T和白B蛋白的叙动蛋调节蛋白蛋白肌钙、关于格式肌肌球肉收确的与肌由c、参述正是A缩的。程序&#xff0d;脂症A性β细胞细胞形红细胞形红细胞获得核红红细胞D.靶蛋白棘形缺乏裂红椭圆.有。个凸制动柱塞空气部有轮、框架阀内三根。&#xff0c;现可象E.后不出带B带C.等带…

每年一波FPGA系列新品,这次Achronix专为AI/ML应用打造……

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;近日&#xff0c;美国eFPGA IP企业Achronix在京召开产品发布会&#xff0c;推出了全新…

Qt中QPushButton设置按钮的文本位置

特定样式引言解决方法总结引言 今天碰到一个动态创建的QPushButton添加到布局中&#xff0c;我需要设置按钮的文本距离边框的距离&#xff0c;按照以往自己设置的与边框的距离的方式设置的样式&#xff0c;没有起到任何作用。 前提是&#xff1a;qss文件能正常加载&#xff0c…

折线图x轴的日期会超出_matplotlib之折线图(代码+解析)

作者&#xff1a;禹棋赢本文推荐一个仓库Plot-Pictures-Tutorial-for-Paper​github.com该仓库会总结论文中常见图形的画法&#xff0c;本节介绍折线图&#xff1a;一、折线图绘制折线图我们通常使用plot函数画曲线&#xff08;折线&#xff09;。每一个plot函数对应一条曲线&a…

K8S精华问答 | Kubernetes集群常见问题

作为是Google开源的容器集群管理系。在Docker技术的基础上&#xff0c;为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能&#xff0c;提高了大规模容器集群管理的便捷性。今天&#xff0c;我们就来看看关于k8s的精华问答吧。1Q:什么是Kubernetes&…

Linux使用yum install 安装程序时,提示“另外一个程序锁定了 yum;等待它退出……”

Linux使用yum install 安装程序时&#xff0c;提示“另外一个程序锁定了 yum&#xff1b;等待它退出……” https://www.cnblogs.com/qf123/p/9909790.html 原因&#xff1a; yum命令一次只能安装一个软件&#xff0c;所以当你下载安装第二个软件包时&#xff0c;系统进程锁会…

micropython固件源码_Micropython加速物联网开发7 - Micropython源码编译与固件更新

在实际开发中&#xff0c;难免会遇到编译Micropython源码的情况&#xff1a;比如当前固件损坏、固件版本升级、需要裁剪固件节省空间等。本文介绍在Linux环境中编译Micropython源码并下载到TPYBoard运行的流程。获取Micropython源码Linux环境下获取Micropython源码非常简单&…

小鹏汽车吴新宙:要做全国第一 | 人物志

戳蓝字“CSDN云计算”关注我们哦&#xff01;人物志&#xff1a;观云、盘点、对话英雄。以云计算风云人物为核心&#xff0c;聚焦个人成长、技术创新、产业发展&#xff0c;还原真实与鲜活&#xff01;在国内自动驾驶汽车领域&#xff0c;成立于2014年的小鹏汽车&#xff0c;因…

验证布局中控件的父窗口

验证布局中的控件的父窗口概述示例开发环境项目运行结果结论番外概述 平时在创建一个窗口类的子空间时&#xff0c;一般需要先创建布局&#xff0c;将子控件添加到窗口的布局中。子控件没有显示的指定父窗口时&#xff0c;那么这个布局中的控件的父窗口是布局还是这个窗口类呢…

Centos6.8安装Nginx+域名转发

2分钟搭建企业轻量级反向代理服务器 文章目录一、linux 环境 安装nginx二、需求分析下载/解压/启动tomcat2.1 需求分析2.2 Linux环境下载和配置Tomcat三、nginx域名转发场景13.1 编辑nginx配置文件3.2 创建配置文件中的目录3.3 创建一个配置文件四、编辑配置文件添加映射信息4.…

手机有一个时钟的标志_STM32F7系统配置控制器(SYSCFG)及复位和时钟控制(RCC)...

这篇文章带大家看一下STM32F7的系统配置控制器。系统配置控制器主要用于&#xff1a;1、 选择以太网PHY接口&#xff1b;2、 交换FMC SDRAM存储区域与NOR/PSRAM存储区域&#xff1b;3、 管理GPIO外部中断线连接&#xff1b;在系统控制寄存器里有一个bit位来选择使用哪个选项字定…

Nignx负载均衡

2分钟搭建企业轻量级负载均衡服务器 文章目录一、启动2个tomcat端口为8080和8081二、在/usr/local/nginx/conf/vhost创建static.imooc.com.conf文件一、启动2个tomcat端口为8080和8081 二、在/usr/local/nginx/conf/vhost创建static.imooc.com.conf文件 内容如下&#xff1a;…

qt中QDoubleSPinBox设置其指定的样式及带单位

概述 本文旨在记录使QDoubleSpinBox呈现出行编辑器QLineEdit的效果&#xff0c;又不使其失去鼠标选中当前的QDoubleSpinBox后滚轮滚动增加减少其值的特性。这里选中的控件还是QDoubleSPinBox,在样式设置上使其呈现行编辑的效果&#xff0c;功能上继续保持滚轮滚动的时候数值增…

IEEE 回应禁止华为系审稿人;WiFi联盟、蓝牙联盟已恢复华为成员资格;中国计算机学会:暂时中止与IEEE通信学会合作……...

戳蓝字“CSDN云计算”关注我们哦&#xff01;嗨&#xff0c;大家好&#xff0c;重磅君带来的【云重磅】特别栏目&#xff0c;如期而至&#xff0c;每周五第一时间为大家带来重磅新闻。把握技术风向标&#xff0c;了解行业应用与实践&#xff0c;就交给我重磅君吧&#xff01;重…

VM安装CentOS6.8虚拟机

1分钟安装CentOS6.8虚拟机 文章目录1. 检查BIOS虚拟化支持(可以先执行第二步&#xff0c;如果不支持再回来设置)2. 新建虚拟机3. 新建虚拟机向导4. 创建虚拟空白光盘5. 安装Linux系统对应的CentOS版6. 虚拟机命名和定位磁盘位置7. 处理器配置&#xff0c;看自己是否是双核、多核…

cbrt c语音_C语言有哪些鲜为人知的特性?

本文由 伯乐在线 - Lingfeng Ai 翻译自 Quora。未经许可&#xff0c;禁止转载&#xff01;欢迎加入&#xff1a;技术翻译小组&#xff0c;或分享原创到伯乐头条。译注&#xff1a;本文摘编自 Quora 的一个热门问答贴。 请在linux系统下测试本文中出现的代码switch语句中的case …

QString中文字符串中指定字符的查找

中文字符串指定字符查找场景示例运行环境示例代码代码讲解难点重点场景 在一个QString类型的中文字符串中查找一个指定的中文字符串&#xff0c;找到该指定的中文字符串后&#xff0c;返回其找到的下标位置&#xff0c;判断下标位置向前一位的字符是否为指定的字符。 示例 运…

强强联手 SAP Ariba与苏宁易购共建中国企业智慧采购

2019年5月30日&#xff0c;南京讯— SAP Ariba&#xff08;采购云&#xff09;联合苏宁易购共同宣布达成战略合作关系&#xff0c;苏宁易购成为SAP Ariba Spot Buy&#xff08;零星采购&#xff09;业务在中国大陆地区的合作伙伴。双方将利用SAP与苏宁集团的全业态资源&#xf…

Lombok快速入门

Lombok快速入门 文章目录一、Lombok介绍&#xff1a;1.1 Lombok优点&#xff1a;1.2 lombok 依赖引入1.3 lombok 插件安装二、常用注解2.1 Getter and Setter2.2 ToString2.3 EqualsAndHashCode2.4 NoArgsConstructor2.5 AllArgsConstructor2.6 Slf4j2.7 Builder、2.8 Data2.92…