题目描述:
找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
示例 1:
输入:
[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3
解法:
1.交换
因为数组中的元素范围都在0-n-1之间(n为数组长度),故我们可以将数组元素通过交换放到他们应该在的地方。例如:i位置的数组元素为nums[i]
在交换过程中遇到i不等于nums[i] 但nums[i]等于nums[nums[i]]时 说明nums[i]元素重复 返回nums[i]
2.Hashset
利用Hashset不存储重复元素的原理 将数组元素依次存储hashset 遇到已经在hashset中存在的元素 即为重复元素 直接返回