Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 34990fb

Browse files
Merge pull request youngyangyang04#2819 from markwang1992/922-sortArrayByParityII
992.按奇偶排序数组II更新题目描述,增加Go方法二和方法三
2 parents 2be29d7 + 03f60b6 commit 34990fb

File tree

1 file changed

+54
-23
lines changed

1 file changed

+54
-23
lines changed

‎problems/0922.按奇偶排序数组II.md

Lines changed: 54 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111

1212
[力扣题目链接](https://leetcode.cn/problems/sort-array-by-parity-ii/)
1313

14-
给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。
14+
给定一个非负整数数组 nums, nums 中一半整数是奇数,一半整数是偶数。
1515

16-
对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。
16+
对数组进行排序,以便当 nums[i] 为奇数时,i 也是奇数;当 nums[i] 为偶数时, i 也是偶数。
1717

1818
你可以返回任何满足上述条件的数组作为答案。
1919

@@ -35,17 +35,17 @@
3535
```CPP
3636
class Solution {
3737
public:
38-
vector<int> sortArrayByParityII(vector<int>& A) {
39-
vector<int> even(A.size() / 2); // 初始化就确定数组大小,节省开销
40-
vector<int> odd(A.size() / 2);
41-
vector<int> result(A.size());
38+
vector<int> sortArrayByParityII(vector<int>& nums) {
39+
vector<int> even(nums.size() / 2); // 初始化就确定数组大小,节省开销
40+
vector<int> odd(nums.size() / 2);
41+
vector<int> result(nums.size());
4242
int evenIndex = 0;
4343
int oddIndex = 0;
4444
int resultIndex = 0;
45-
// 把A数组放进偶数数组,和奇数数组
46-
for (int i = 0; i < A.size(); i++) {
47-
if (A[i] % 2 == 0) even[evenIndex++] = A[i];
48-
else odd[oddIndex++] = A[i];
45+
// 把nums数组放进偶数数组,和奇数数组
46+
for (int i = 0; i < nums.size(); i++) {
47+
if (nums[i] % 2 == 0) even[evenIndex++] = nums[i];
48+
else odd[oddIndex++] = nums[i];
4949
}
5050
// 把偶数数组,奇数数组分别放进result数组中
5151
for (int i = 0; i < evenIndex; i++) {
@@ -62,22 +62,22 @@ public:
6262
6363
### 方法二
6464
65-
以上代码我是建了两个辅助数组,而且A数组还相当于遍历了两次,用辅助数组的好处就是思路清晰,优化一下就是不用这两个辅助树,代码如下:
65+
以上代码我是建了两个辅助数组,而且nums数组还相当于遍历了两次,用辅助数组的好处就是思路清晰,优化一下就是不用这两个辅助数组,代码如下:
6666
6767
```CPP
6868
class Solution {
6969
public:
70-
vector<int> sortArrayByParityII(vector<int>& A) {
71-
vector<int> result(A.size());
70+
vector<int> sortArrayByParityII(vector<int>& nums) {
71+
vector<int> result(nums.size());
7272
int evenIndex = 0; // 偶数下标
7373
int oddIndex = 1; // 奇数下标
74-
for (int i = 0; i < A.size(); i++) {
75-
if (A[i] % 2 == 0) {
76-
result[evenIndex] = A[i];
74+
for (int i = 0; i < nums.size(); i++) {
75+
if (nums[i] % 2 == 0) {
76+
result[evenIndex] = nums[i];
7777
evenIndex += 2;
7878
}
7979
else {
80-
result[oddIndex] = A[i];
80+
result[oddIndex] = nums[i];
8181
oddIndex += 2;
8282
}
8383
}
@@ -96,15 +96,15 @@ public:
9696
```CPP
9797
class Solution {
9898
public:
99-
vector<int> sortArrayByParityII(vector<int>& A) {
99+
vector<int> sortArrayByParityII(vector<int>& nums) {
100100
int oddIndex = 1;
101-
for (int i = 0; i < A.size(); i += 2) {
102-
if (A[i] % 2 == 1) { // 在偶数位遇到了奇数
103-
while(A[oddIndex] % 2 != 0) oddIndex += 2; // 在奇数位找一个偶数
104-
swap(A[i], A[oddIndex]); // 替换
101+
for (int i = 0; i < nums.size(); i += 2) {
102+
if (nums[i] % 2 == 1) { // 在偶数位遇到了奇数
103+
while(nums[oddIndex] % 2 != 0) oddIndex += 2; // 在奇数位找一个偶数
104+
swap(nums[i], nums[oddIndex]); // 替换
105105
}
106106
}
107-
return A;
107+
return nums;
108108
}
109109
};
110110
```
@@ -253,6 +253,37 @@ func sortArrayByParityII(nums []int) []int {
253253
}
254254
return result;
255255
}
256+
257+
// 方法二
258+
func sortArrayByParityII(nums []int) []int {
259+
result := make([]int, len(nums))
260+
evenIndex := 0 // 偶数下标
261+
oddIndex := 1 // 奇数下标
262+
for _, v := range nums {
263+
if v % 2 == 0 {
264+
result[evenIndex] = v
265+
evenIndex += 2
266+
} else {
267+
result[oddIndex] = v
268+
oddIndex += 2
269+
}
270+
}
271+
return result
272+
}
273+
274+
// 方法三
275+
func sortArrayByParityII(nums []int) []int {
276+
oddIndex := 1
277+
for i := 0; i < len(nums); i += 2 {
278+
if nums[i] % 2 == 1 { // 在偶数位遇到了奇数
279+
for nums[oddIndex] % 2 != 0 {
280+
oddIndex += 2 // 在奇数位找一个偶数
281+
}
282+
nums[i], nums[oddIndex] = nums[oddIndex], nums[i]
283+
}
284+
}
285+
return nums
286+
}
256287
```
257288

258289
### JavaScript

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /