审题
- 数组重复 且 无序
- 数组范围 0 到 n - 1
- 寻找数组中任意重复的数字
解题
-
寻找克隆人?
-
i 看作是房间
-
nums[i] 房间的房主人
-
nums[i] 可疑人员的房间
-
nums[nums[i]] 可疑人员房间的房主人
-
房间里可能有克隆人
-
for警官遍历查房
-
如果是房主人,换房间继续遍历查房
-
如果不是房间主人,检查这个人是不是克隆人
查看可疑人员的身份证,找到他的房间 查看他房间里的人是不是房主人 如果是房主人,则它是克隆人 如果不是,则他走错屋子,换房间,继续遍历检查
while (nums[i] != i) {
if (nums[i] == nums[nums[i]) {
return nums[i];
}
}
- 如果是克隆人则抓走。
- 如果不是继续查房。
- 查到最后如果没找到克隆人则返回-1。