leetcode 905. 按奇偶排序数组 JavaScript

第一种办法是声明一个新数组,然后遍历原数组将偶数放入新数组的前面,奇数放到新数组的后面

/**
 * @param {number[]} A
 * @return {number[]}
 */
var sortArrayByParity = function(A) {
    let s =0,j=A.length-1,b = []
    for(let i =0; i< A.length; i++) {
        if(A[i]%2 == 0) {
            b[s] = A[i]
            s++
        } else {
            b[j] = A[i]
            j--
        }
    }
    return b
};

第二种是原地算法,用两个指针从数组前后同时遍历,遇到前奇后偶的就叫唤一下

/**
 * @param {number[]} A
 * @return {number[]}
 */
var sortArrayByParity = function(A) {
    let i=0;j=A.length-1
    while (i <j) {
        if(A[i]%2 >A[j]%2) {
            let tmp = A[j]
            A[j] = A[i]
            A[i] = tmp
        }
        if (A[i]%2==0) i++
        if (A[j]%2==1) j--
    }
    return A
};

题目

给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。