【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 29✅ 今天做了:Redis消息队列⏰ 明天计划:继续学消息队列
2
Day 17🧭行动:学习了Python最后一个知识点:异常处理🤓体会:Python 程序一旦发生异常,如果没有捕获处理,程序就会直接崩溃终止。使用"try-except"捕获异常,可以预先写好异常处理方案:比如打印友好提示、记录日志、释放资源,保证程序不会直接退出,还能继续运行。🧑💻代码:try:print("================================")# pri
2
Day1今天学习了java中if的使用
2
day 61今天来学校上课了,和教授谈了,可以接下RA工作,不过一周只能charge 10h, 工资很少,不过一个月600刀也勉强比没有好。今天的工作还没做完,最近在做知识库构造,Ui/UX上周就设计完,现在在做底座的建设今天也让Claude直接帮我把Neetcode150 题目+解题思路+代码给我整理了,我发现我真的只有找碎片化时间才能做题,我还不如先背先回忆(之前都做过)祝祖国母亲节日快乐,也
2
Day 1✅ 今天做了:⏰ 明天计划:📚 今日感悟:
0
