如何在给定的整数数组中找到重复的数字?

本文介绍了解决数组中寻找重复数字问题的三种方法:使用hash表记录每个数字出现的次数;通过重新排序数组并检查每个元素是否位于其正确的位置;以及通过统计特定范围内数字的数量来判断是否存在重复。每种方法都详细解释了操作步骤,并提供了实例说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解一、

最先涌现的想法是遍历一遍数组,用hash表记录每一个数字出现的次数;

用空间换时间

解二、

剑指offer解法

重新排序数组每个数字,当扫描到数字m的时候判断下标为i的数字是否等于m:如果是,就寻找下一个;如果不是,就判断下标为m的对应的数字是否等于m,如果它与第m个数字相等,就等于找到了一个重复的数字,如果不相等就把第i个数与第m个数交换位置,把m放在其对应的下标m的位置。

例如:

首先给定数组arr[] = {2, 3, 0, 1, 3}。因为数组中最大的数是n-1,那就一个萝卜一颗坑。从0号下标位置开始,0号元素为2,不等于0,交换0号和2号位置,数组变为: 
{0, 3, 2, 1, 3}。再比较0号位置,下标和值相等,往后走到1号下标元素为3,不等于1,交换1号和3号,变成:{0, 1, 2, 3, 3}。再继续,下标来到4号位置,发现元素下标与值不相等,比较4号和3号下标位置,发现元素相等,返回3即可。
--------------------- 
作者:askunix_hjh 
来源:优快云 
原文:https://blog.youkuaiyun.com/m0_37925202/article/details/81415825 
版权声明:本文为博主原创文章,转载请附上博文链接!

解三、

根据区间数字个数,判断是否有重复数字。

比如:统计小于5的数字个数——有6个数字,那么就有重复的。因为小于5的数字只有:0,1,2,3,4 五个。

(但我觉得这个是特例,如果小于5的数字有五个但是0,0,0,0,0呢?)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值