第一种办法是声明一个新数组,然后遍历原数组将偶数放入新数组的前面,奇数放到新数组的后面
/**
* @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
的所有偶数元素之后跟着所有奇数元素。