剑指offer03
# 剑指offer03
找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3
- 返回整型数组长度num.length是调用属性(包括字符数组),后面不需要跟括号。String.length()是调用方法。
- 原地哈希:时间O(n)空间O(1),因为每交换一次,就有一个索引值和索引匹配,所以最多交换n次,所以时间复杂度是O(n)。根据鸽巢原理,当前索引值和索引下的值相等说明该索引值重复,直接return当前索引值。
- 二分查找不行的原因在于,当两边的count都等于各自的区间长度时,则重复数字可能在左边也可能在右边。
编辑 (opens new window)
上次更新: 2023/12/15, 15:49:57