【前端算法每日一题】leetcode-剑指Offer21.调整数组顺序使奇数位于偶数前面

105 阅读1分钟

题目描述

  • 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。

解题思路

  • 双指针
  • 首尾指针
  • 首尾交换元素,遇到偶数交换,right指针向前移动
  • 遇到奇数,left指针向后移动

解题代码(JavaScript)

var exchange = function (nums) {
  // 左指针
  let left = 0;
  // 右指针
  let right = nums.length - 1;
  // 遍历元素,原地移动数组
  while (left < right) {
    if (nums[left] % 2 === 0) {
      // 处理偶数情况
      // let temp = nums[left];
      // nums[left] = nums[right];
      // nums[right] = temp;
      [nums[left], nums[right]] = [nums[right], nums[left]];
      right--;
    } else {
      // 处理奇数情况
      left++;
    }
  }
  return nums;
};