双指针 数组负数右移

91 阅读1分钟

题目

给定一组数组,要求把负数都移向右边,同时保证正数的相对顺序

  • 双指针,右指针向右遍历,如果右指针指向的数大于0,那么和左指针数交换,左指针向右移动1位
function move_negatives_to_end(arr) {
  left = 0;
  right = 0;

  while (right < arr.length) {
    if (arr[right] >= 0) {
      [arr[left], arr[right]] = [arr[right], arr[left]];
      left += 1;
    }

    right += 1;
  }

  return arr;
}
const arr = [1, 2, 3, -4, -5, 6, 7, -8, 9];
console.log(move_negatives_to_end(arr));