给定一个非负整数数组 A,返回一个由 A 的所有偶数元素组成的数组,后面跟 A 的所有奇数元素。

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

 

示例:

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

提示:

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

 

思路:

直接看代码

1.Time:O(n) Space:O(n)

// Time:O(n) Space:O(n)
	public int[] sortArrayByParity(int[] A) {
		int[] res = new int[A.length];
		int t = 0;

		for (int i = 0; i < A.length; ++i)
			if (A[i] % 2 == 0)
				res[t++] = A[i];

		for (int i = 0; i < A.length; ++i)
			if (A[i] % 2 == 1)
				res[t++] = A[i];

		return res;
	}

2.Time:O(n) Space:O(1)

    // Time:O(n) Space:O(1)
	public int[] sortArrayByParity2(int[] A) {
		int i = 0, j = A.length - 1;
		while (i < j) {
			if (A[i] % 2 > A[j] % 2) {
				// i为奇数 j为偶数 交换
				swap(A, i, j);
			}
			if (A[i] % 2 == 0)  //i为偶数  往后判断
				i++;
			if (A[j] % 2 == 1)  //j为奇数  往前判断
				j--;
		}
		return A;
	}

	private void swap(int[] a, int i, int j) {
		int temp = a[i];
		a[i] = a[j];
		a[j] = temp;
	}