原地交换
题目描述:
原地交换解法
- 由于给定数组必有重复元素 且元素范围为[0 ~ n-1] 故至少有一个元素对应数组的某个下标
- 从下标为0的元素开始遍历
- 若当前元素等于下标 循环继续
- 只当当前元素等于下标时 下标加一 即如果找不到重复元素则一直交换 直到找到重复元素或当前元素等于下标
- 此条规则为 原地交换 的核心思想
- 即下标不变 nums[i] 与 nums[nums[i]]交换
- 若交换一次后则下标加一
- 以下数组 : 3,4,2,0,0,1 将无法找到重复元素
- 如果当前元素等于nums[num[i]] 则找到重复元素
- 其他情况则原地交换
- nums[i] 与 nums[nums[i]]交换