Skip to content

Commit 49352d7

Browse files
committed
Add solution 0905 solution.js
1 parent 8474fb7 commit 49352d7

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/**
2+
* @param {number[]} A
3+
* @return {number[]}
4+
*/
5+
// 第一次的做法
6+
var sortArrayByParity = function (A) {
7+
const len = A.length;
8+
if (len == 1) return A;
9+
let evenNumber = [];
10+
let oddNumber = [];
11+
for (let i = 0; i < len; i++) {
12+
if (A[i] % 2 == 0) {
13+
evenNumber.push(A[i]);
14+
}
15+
if (A[i] % 2 != 0) {
16+
oddNumber.push(A[i]);
17+
}
18+
}
19+
return evenNumber.concat(oddNumber);
20+
};
21+
// 修改第一次的代码,只使用一个数组,减少一次合并数组操作
22+
var sortArrayByParity = function (A) {
23+
const len = A.length;
24+
if (len == 1) return A;
25+
let eoNum = [];
26+
for (let i = 0; i < len; i++) {
27+
if (A[i] % 2 == 1) {
28+
eoNum.push(A[i]);
29+
}
30+
if (A[i] % 2 == 0) {
31+
eoNum.unshift(A[i]);
32+
}
33+
}
34+
return eoNum;
35+
};
36+
// 双指针做法,无需新数组,push和unshift操作,利用第三个变量进行交换
37+
var sortArrayByParity = function (A) {
38+
const len = A.length;
39+
if (len == 1) return A;
40+
let i = 0,
41+
j = len - 1;
42+
while (i < j) {
43+
if ((A[i] % 2 == 1) && (A[j] % 2 == 0)) {
44+
let temp = A[j];
45+
A[j] = A[i];
46+
A[i] = temp;
47+
i++;
48+
j--;
49+
}
50+
if (A[i] % 2 == 0) i++;
51+
if (A[j] % 2 == 1) j--;
52+
}
53+
return A;
54+
};

0 commit comments

Comments
 (0)