Skip to content

Commit 11916e0

Browse files
committed
Add 0922 Solution.js and README.md
1 parent 408ab73 commit 11916e0

File tree

2 files changed

+75
-0
lines changed

2 files changed

+75
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# 按奇偶排序数组 II
2+
3+
### 题目描述
4+
5+
给定一个非负整数数组 `A`, A 中一半整数是奇数,一半整数是偶数。
6+
7+
对数组进行排序,以便当 `A[i]` 为奇数时,`i` 也是奇数;当 `A[i]` 为偶数时, `i` 也是偶数。
8+
9+
你可以返回任何满足上述条件的数组作为答案。
10+
11+
**示例**
12+
13+
```
14+
输入:[4,2,5,7]
15+
输出:[4,5,2,7]
16+
解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。
17+
```
18+
19+
**提示**
20+
21+
1. `2 <= A.length <= 20000`
22+
2. `A.length % 2 == 0`
23+
3. `0 <= A[i] <= 1000`
24+
25+
### 解题思路
26+
27+
**思路**
28+
29+
两个指针`i``j`分别指向偶数位和奇数位,当`A[i]`是奇数时,寻找最近的`A[j]`是偶数的位置,交换两个数字。直至遍历完整个数组的偶数位。
30+
31+
**算法**
32+
33+
```javascript
34+
var sortArrayByParityII = function(A) {
35+
let index = A.length - 1, i = 0, j = 1; // index A的索引,i偶数位,j奇数位。
36+
for( ; i < index; i += 2 ){
37+
if( (A[i] & 1) != 0 ){ // 寻找A[i]是奇数的情况。
38+
while( (A[j] & 1) != 0 ){ // 寻找A[j]是偶数的情况。
39+
j += 2;
40+
}
41+
let temp = A[j];
42+
A[j] = A[i];
43+
A[i] = temp;
44+
}
45+
}
46+
return A;
47+
};
48+
```
49+
50+
**复杂度分析**
51+
52+
暂无
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* @param {number[]} A
3+
* @return {number[]}
4+
*/
5+
6+
/**
7+
* Author: Mcnwork2018
8+
*/
9+
10+
var sortArrayByParityII = function(A) {
11+
let index = A.length - 1, i = 0, j = 1; // index A的索引, i偶数位, j奇数位。
12+
for ( ; i < index; i += 2 ) {
13+
if ( (A[i] & 1) != 0 ) { // 寻找A[i]是奇数的情况。
14+
while ( (A[j] & 1) != 0 ) { // 寻找A[j]是偶数的情况。
15+
j += 2;
16+
}
17+
let temp = A[j];
18+
A[j] = A[i];
19+
A[i] = temp;
20+
}
21+
}
22+
return A;
23+
};

0 commit comments

Comments
 (0)