lewenweijia / notes

🏊 dive dive diving
1 stars 0 forks source link

数组原地反转 #3

Open lewenweijia opened 5 years ago

lewenweijia commented 5 years ago

核心思想: 对撞指针, 数组项值互换

  1. while 版本

    
    function reverse(nums) {
    let i = 0;
    let j = nums.length - 1;
    while (i < nums.length) {
    // boundary check
    if (i >= j) break;
    
    [nums[i], nums[j]] = [nums[j], nums[i]];
    
    i++;
    j--;
    }
    
    return nums;
    }

// reverse([]) -> [] // reverse([1,2,3,4]) -> [4,3,2,1]


2. `for` 版本
```js
function reverse(nums) {
  for (let i = 0, j = nums.length - 1; i < nums.length; i++, j--) {
      if (i >= j) break;

      [nums[i], nums[j]] = [nums[j], nums[i]];
    }
  }

  return nums;
}
lewenweijia commented 4 years ago

function reverse(arr) {
  let low = 0;
  let high = arr.length - 1;
  while (low < high) {
    [arr[low], arr[high]] = [arr[high], arr[low]];

    low++;
    high--;
  }

  return arr;
}