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

可视化图解算法68:数组中出现次数超过一半的数字

1.题目

描述

给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。

例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。

数据范围:n≤50000,数组中元素的值 0 ≤val≤10000

要求:空间复杂度:O(1),时间复杂度 O(n)

输入描述:

保证数组输入非空,且保证有解

示例1

输入:

[1,2,3,2,2,2,5,4,2]

返回值:

2

示例2

输入:

[3,3,3,3,2,2,2]

返回值:

3

示例3

输入:

[1]

返回值:

1

2. 题解思路

本题的关键是统计数字出现的次数,可以想到用map实现。map中的key为数组元素(数字),value为出现的次数(默认为0)。

具体思路是:

  1. 定义一个哈希表(map);

  2. 遍历数组,对元素出现的次数进行统计(map中的key为元素,value为元素出现的次数);

  3. 遍历map,查看key对应的值是否超过数组长度的一半。

如果文字描述的不太清楚,你可以参考视频的详细讲解。

  • Python版本:https://www.bilibili.com/cheese/play/ep1374987
  • Java版本:https://www.bilibili.com/cheese/play/ep1368277
  • Golang版本:https://www.bilibili.com/cheese/play/ep1368661

3.编码实现

核心代码如下:

func MoreThanHalfNum_Solution(numbers []int) int {// 1.定义一个哈希表(map)hastTable := make(map[int]int)//2.遍历数组,对元素出现的次数进行统计(map中的key为元素,value为元素出现的次数)for _, v := range numbers {hastTable[v]++}//3.遍历map,查看key对应的值是否超过数组长度的一半for key, _ := range hastTable {if hastTable[key] > len(numbers)/2 {return key}}return -1
}

具体完整代码你可以参考下面视频的详细讲解。

  • Python版本:https://www.bilibili.com/cheese/play/ep1374987
  • Java版本:https://www.bilibili.com/cheese/play/ep1368277
  • Golang版本:https://www.bilibili.com/cheese/play/ep1368661

4.总结

如果算法题目遇到统计次数个数等,一般用map来实现,key存储元素,value存储个数。

分割线

《数据结构与算法》深度精讲课程正式上线啦!7 大核心算法模块全解析:

  ✅   链表

  ✅   二叉树

  ✅   二分查找、排序

  ✅   堆、栈、队列

  ✅   回溯算法

  ✅   哈希算法

  ✅   动态规划

无论你是备战笔试面试、提升代码效率,还是突破技术瓶颈,这套课程都将为你构建扎实的算法思维底座。🔥立即加入学习打卡,与千名开发者共同进阶!

  • Python编码实现:https://www.bilibili.com/cheese/play/ss897667807
  • Java编码实现:https://www.bilibili.com/cheese/play/ss161443488
  • Golang编码实现:https://www.bilibili.com/cheese/play/ss63997

对于LeetCode数据结构与算法,我们总结了一套【可视化+图解】方法,依据此方法来解决相关问题,算法变得易于理解,写出来的代码可读性高也不容易出错。具体也可以参考视频详细讲解。

今日佳句:会当凌绝顶,一览众山小。

http://www.jsqmd.com/news/39424/

相关文章:

  • 2025年惠州线下媒体公司权威推荐榜单:楼宇视频广告/社区广告/社区媒体广告源头公司精选
  • 题解:P9052 [PA 2021] Areny
  • Copula函数的参数估计与拟合
  • 深度学习进阶(八)——AI 操作系统的雏形:AgentOS、Devin 与多智能体协作 - 实践
  • 服务保护
  • [电调]AM32电调调参系列 —— PWM Frequency参数分析
  • 【MySQL】数据库表的CURD(二) - 详解
  • 2025年国内自助入住系统公司排行榜:智能化酒店解决方案全面解析
  • 2025年国内自助入住系统公司TOP5权威推荐:智慧住宿新选择
  • 2025年11月安徽合肥最值得信赖的十大自助入住系统企业权威推荐
  • 基于AdaBoost算法的人脸检测原理与实现
  • 内蒙古太空菌酸奶厂家,厚乳老酸奶厂家排名,希腊酸奶公司排行榜,奶皮子糖葫芦生产厂家,干咽酸奶厂家,冷萃酸奶源头工厂,口碑推荐!
  • 把云南交给我:一名向导的专业承诺
  • vs一打开文件上传的页面, 即使不上传文件 然后关闭页面 vs就退出调试模式了
  • PG系列:并行创建索引
  • 透明液晶展示柜鞍山批发,实时报价享特价省成本
  • 2025年行业内专业的安检门源头厂商推荐榜单,演唱会安检门/行李安检门/工厂安检门/车站安检机实力厂家口碑推荐榜
  • OLIDWORKS 2025 SP5.0 多语言完整版 10 月更新,解锁三维机械设计新高度
  • 推荐4款内网穿透工具,轻松突破内网限制
  • 2025年不锈钢逆流闭式冷却塔定做厂家权威推荐榜单:密闭式冷水塔/印染废水用封闭式凉水塔/印染废水用闭式冷却塔源头厂家精选
  • bluetooth matlab GFSK 调制解调,误码率统计
  • without updating the macOS to figure out the Markdown import to Mac Note app
  • 统计学第二章
  • MATLAB 对于小目标检测,绘制roc曲线
  • 南通开合屏零售优惠价查询,享批发折扣与即时报价
  • B3758 [信息与未来 2021] 括号序列
  • 构建数据安全体系,数据分类分级是核心
  • 基于卷积神经网络的手写字体识别实现
  • 2025 年 11 月防静电地板厂家推荐排行榜,全钢/全钢陶瓷/硫酸钙/铝合金/pvc架空地板,OA网络地板,机房防静电地板,办公室架空地板公司精选
  • 破解传统数据安全监测瓶颈,数据安全平台是关键