/*
* 找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。
* 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。
* 请找出数组中任意一个重复的数字。
示例 1:
输入:
[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3
* 原地置换法:
* 由题意知,数组中所有数字都在0~n-1的范围内,因此,我们希望每个索引(位置)上的
* 数值(等于)其索引。如果出现相同索引上有多个值,那么这个数字就是重复的
* 流程:1、遍历数组,设置初始索引值为0
* 2、如果当前数值等于对应索引,则跳过循环,进行下一轮的比较
* 3、如果当前数值 不 等于对应索引,但其等于对应数值的索引。则说明当前数值是重复值
* 因为每个数值等于其索引,如果有不同索引上数值相同,一定是重复的
* 上面代码语句为:num[i] == num[num[i]];
* 4、如果当前数值 不 等于对应索引且不是重复值。就把当前数值放置到对应的索引上
* 复杂度:
* 分析以上流程,一轮循环就能找到重复值。时间复杂度为O(n)
* 空间复杂度只需要一个额外的空间的存放交换值。空间复杂度为O(1)
* */
public