问题摘要:
找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
示例1:
输入:
[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3
示例2:
输入:
[0,1,2,3,4,11,6,7,8,9,10,11,12,13,14,15]
输出:11
解答:
object Solution {
def findRepeatNumber(nums: Array[Int]): Int = {
for (i <- 0 until nums.length){
while(nums(i) != i){
if(nums(i) != nums(nums(i))){
nums(i) = nums(i) + nums(nums(i))
nums(nums(i)) = nums(i) - nums(nums(i))
nums(i) = nums(i) - nums(nums(i))
}else return nums(i)
}
}
return -1
}
}
题目中,数字大小必定小于等于数组最大下标。将数组中的数值与下标大小一一对应,即可找出重复值。