【MarsCode】每日一题 之找出整型数组中占比超过一半的数字
找出整型数组中占比超过一半的数字
1.问题描述
小R从班级中抽取了一些同学,每位同学都会给出一个数字。已知在这些数字中,某个数字的出现次数超过了数字总数的一半。现在需要你帮助小R找到这个数字。
测试样例
样例1:
输入:
array = [1, 3, 8, 2, 3, 1, 3, 3, 3]输出:3
样例2:
输入:
array = [5, 5, 5, 1, 2, 5, 5]输出:5
样例3:
输入:
array = [9, 9, 9, 9, 8, 9, 8, 8]输出:9
2.思路与题解
-
理解问题:我们需要找到数组中出现次数超过一半的数字。
-
数据结构选择:由于我们只需要找到一个数字,不需要额外的数据结构。
-
算法步骤
:
-
初始化两个变量:
candidate用于存储当前候选数字,count用于记录当前候选数字的计数。 -
遍历数组中的每个元素:
-
如果
count为 0,将当前元素设为candidate,并将count设为 1。 -
如果当前元素与
candidate相同,增加count。 -
如果当前元素与
candidate不同,减少count。
-
-
最终
candidate就是我们要找的数字。
-
2.4代码框架
Java
▼java复制代码public class Main { public static int solution(int[] array) { // Edit your code here int candidate = 0; int count = 0; for(int num : array){ if (count ==0) { candidate=num; } if (num== candidate) { count++; }else{ count--; } } return candidate; } public static void main(String[] args) { // Add your test cases here System.out.println(solution(new int[]{1, 3, 8, 2, 3, 1, 3, 3, 3}) == 3); } }
C++
▼c++复制代码
Python
▼python复制代码
Golang
▼go复制代码
2.5一些疑难的代码解释
candidate和count用于跟踪当前的候选数字和其计数。- 遍历数组时,根据当前元素更新
candidate和count。 - 最终
candidate就是出现次数超过一半的数字。
3.欢迎大佬们关注或莅临本渣的一些个人website
gitee: https://gitee.com/xiao-chenago github:https://github.com/cool-icu0 语雀:https://www.yuque.com/icu0 csdn:https://cool-icu.blog.csdn.net/
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
内容推荐
Day 103✅ 今天做了:复习了多用户通信系统⏰ 明天计划:学习Java反射
0
Day 68时间19:00~ 22:00(3h)✅ 今天做了:Component注解、Mybatis配置、使用⏰ 明天计划:Lombok、Mapper映射、动态SQL📚 今日感悟:自动配置类DataSourceAutoConfiguration ,会读取properties文件,通过注解:@EnableConfigurationProperties(DataSourceProperties.cl
1
Day 19✅ 今天做了:MCP⏰ 明天计划:AI智能体构建📚 今日感悟:今天MCP问题有点多有点杂,明天找时间再捋一下。继续加油
0
Day 25✅ 今天做了:1、扇贝英语单词打卡2、英语听说读写、听力练习3、微信阅读15分钟4、编程导航学习⏰ 明天计划:待定📚 今日感悟:Keep going!
1
Day 104✅ 今天做了:学习了Java反射及快速入门⏰ 明天计划:继续学习Java反射
0
