原地置换

原地置换主要用于重复出现的数,缺失的数等题目中,总的来说原地置换就是,使索引 == 值,把值放到索引所在处,如为 1 的值,放在索引为 1 的位置,8 的值,放在索引为 8 的位置。

注意:原地置换改变了原来的数组

  1. int temp;
  2. for (int i = 0; i < nums.length; i++) {
  3. while (nums[i] != i) {
  4. // 判断是否有重复值
  5. if (nums[i] == nums[nums[i]]) {
  6. return nums[i];
  7. }
  8. // 置换,把当前值换到下一个索引处
  9. temp = nums[i];
  10. nums[i] = nums[temp];
  11. nums[temp] = temp;
  12. }
  13. }