本文共 434 字,大约阅读时间需要 1 分钟。
题目:求出数组中出现多次的数字,数组大小为n+1,数组元素都是1-n之间的整数且只有一个数字重复出现。
思路:交换的方法。
比如 [2,1,1]
当前下标 对应元素 操作 数组0 2 交换2和1 [1,2,1]1 2 不需要操作 [1,2,1]2 1 1和1相同,找到元素 [1,2,1]
通过交换的方式,将所有元素交换到正确的位置,即nums[x] 对应的数组下标为nums[x]-1。当某一次交换时,交换的两个元素相等,即找到重复数字,比如上面第三次操作时,1和1相等。
代码
class Solution {public: int findDuplicate(vector & nums) { for(int x=0;x
转载地址:http://cnrai.baihongyu.com/