922. 按奇偶排序数组 II

922. 按奇偶排序数组 II

一、题目描述

给定一个非负整数数组A, A 中一半整数是奇数,一半整数是偶数。

对数组进行排序,以便:

  • 当A[i] 为奇数时,i也是奇数;
  • 当A[i]为偶数时,i 也是偶数。

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

二、解题思路

利用双指针,偶数指针放偶数,奇数指针放奇数。

  • 左指针从 1 ~ 2n - 1
  • 右指针从 0 ~ 2n

三、复杂度分析

  • 空间 O(n)
  • 时间 O(n)

四、参考代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
* 奇偶数排序
* @param nums 数组
* @return 排序后的数组
*/
public int[] sortArrayByParityII(int[] nums) {
int[] n = new int[nums.length];
int ep = 0, op = 1;
for (int num : nums) {
if (num % 2 == 0) {
n[ep] = num;
ep += 2;
} else {
n[op] = num;
op += 2;
}
}
return n;
}
作者

jiaduo

发布于

2022-09-18

更新于

2023-04-02

许可协议