python hello world重复_查找数组中重复的数字-python版

题目一:找出数组中重复的数字

在一个长度为n的数组中,数字在0~n-1范围内,数组中某些数字是重复的,但是不知道重复几个,也不知道重复几次,请找出数组中任意一个重复的数字

解法一:可以先将数据进行排序,然后就能很快找到重复的,但是该种方法的时间复杂度是O(nlogn)

解法二:也可以利用哈希表,每遍历一个数字,都能通过O(1)找到是否存在该数字,但是该方法的空间复杂度为O(n)

解法三:遍历数组,将第i个位置的值与第i+1到结尾的每一个值做比较,如果找到,则return,两层for循环(具体见代码)

defget_repeat(arr):if len(arr) <= 1:returnFalsefor i, v inenumerate(arr):for j in arr[i + 1:]:if v ==j:

temp=jprinttempreturnTruereturnFalseif __name__ == '__main__':

arr= [2, 3, 1, 0, 2, 5, 3]

get_repeat(arr)

解法四:重排这个数组,如果这个数组中没有重复的数字,则这个数组是i就在第i个位置上,如果有重复,则重复的数字的位置上就会存在多个值

具体分析:

遍历数组中每一个数字:

判断第i个数字(m)是否等于i:

如果相等,则遍历下一个数字

如果不等,则将m和第m个数字比较&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值