[905] 按奇偶排序数组

1,008 阅读1分钟
/*
 * @lc app=leetcode.cn id=905 lang=javascript
 *
 * [905] 按奇偶排序数组
 */

// @lc code=start
/**
 * @param {number[]} nums
 * @return {number[]}
 */
var sortArrayByParity = function (nums) {
  let i = 0,
    j = nums.length - 1
  while (i < j) {
    // 数组头尾两个指针,如果左指针是奇数,右指针是偶数就交换
    if (nums[i] % 2 === 1 && nums[j] % 2 === 0) {
      ;[nums[i], nums[j]] = [nums[j], nums[i]]
      i++
      j--
    } else if (nums[i] % 2 === 1 && nums[j] % 2 === 1) {
      // 如果左指针是奇数,右指针是奇数,右指针前进一步
      j--
    } else if (nums[i] % 2 === 0 && nums[j] % 2 === 1) {
      // 如果左指针是偶数,右指针是奇数,右右指针都前进一步
      i++
      j--
    } else if (nums[i] % 2 === 0 && nums[j] % 2 === 0) {
      // 都是奇数,左指针就前进一步
      i++
    }
  }
  return nums
}
// @lc code=end