原地交换

题目描述:

原地交换解法

  • 由于给定数组必有重复元素 且元素范围为[0 ~ n-1] 故至少有一个元素对应数组的某个下标
  • 从下标为0的元素开始遍历
  • 若当前元素等于下标 循环继续
  • 只当当前元素等于下标时 下标加一 即如果找不到重复元素则一直交换 直到找到重复元素或当前元素等于下标
    • 此条规则为 原地交换 的核心思想
    • 即下标不变 nums[i] 与 nums[nums[i]]交换
    • 若交换一次后则下标加一
    • 以下数组 : 3,4,2,0,0,1 将无法找到重复元素
  • 如果当前元素等于nums[num[i]] 则找到重复元素
  • 其他情况则原地交换
    • nums[i] 与 nums[nums[i]]交换
posted @ 2021-10-15 00:47  Aalaxy  阅读(99)  评论(0编辑  收藏  举报