leetcode.21 javascript 解法

题目:

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

解法1.

/**
 * @param {number[]} nums
 * @return {number[]}
 */
var exchange = function(nums) {
  let a_nums = [];
  let b_nums = [];
  for(let i = 0;i < nums.length;i++) {
    if (nums[i] % 2 == 0) {
      a_nums.push(nums[i]);
    }else {
       b_nums.push(nums[i]);
    }
  }
  return b_nums.concat(a_nums);
};

解法2.

/**
 * @param {number[]} nums
 * @return {number[]}
 */
var exchange = function(nums) {
  let left = 0;
  let right = nums.length - 1;
  while(left < right) {
    if(nums[left] % 2 !== 0){
      left++;
      continue;
    }
    if(nums[right] % 2 === 0){
      right--;
      continue;
    }
    [nums[left],nums[right]] = [nums[right],nums[left]];
  }
  return nums;
};

 

posted @ 2020-04-14 20:13  必慎  阅读(187)  评论(0编辑  收藏  举报