905.按奇偶排序数组

一、题目描述

给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。

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

示例:

1
2
3
输入:[3,1,2,4]
输出:[2,4,3,1]
输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。

提示:

  1. 1 <= A.length <= 5000
  2. 0 <= A[i] <= 5000

二、题解

1.算法描述

  • 双指针

2.个人分析

  • 声明头尾指针向数组中间遍历,i指针指向偶数,j指针指向奇数;当不符合上述情况时,则交换ij指针所指向的元素。

3.代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int *sortArrayByParity(int *A, int ASize, int *returnSize)
{
int i = 0, j = ASize - 1;
int temp;
while (i < j)
{
if (A[i] % 2 == 0)
i++;
else if (A[j] % 2 != 0)
j--;
else
{
temp = A[i];
A[i] = A[j];
A[j] = temp;
}
}
*returnSize = ASize;
return A;
}