174、按奇偶排序数组

题目描述
给定一个非负整数数组 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

题目比较简单,使用首尾指针
代码如下:

class Solution {
    public int[] sortArrayByParity(int[] A) {
        int start = 0;
		int end = A.length -1;
		while (end > start) {
			//从前面找到第一个不是偶数的下标
			while (A[start] % 2 == 0) {
				start ++;
				if(start > end){
					return A;
				}
			}
			
			//从后面找到第一个不是奇数的下标
			while (A[end] % 2 != 0) {
				end--;
				if(start > end){
					return A;
				}
				
			}
			int tem = A[start];
			A[start] = A[end];
			A[end] = tem;
			start ++;
			end -- ;
			
		}
		return A;
    }
}

排名靠前的代码
感觉差不多啊

class Solution {
    public int[] sortArrayByParity(int[] A) {
        int i = 0;
        int j = A.length-1;
        while(i<j) {
            if(A[i]%2 > A[j]%2){
                int tmp = A[j];
                A[j] = A[i];
                A[i] = tmp;
            }
            if(A[i]%2==0) {
                i++;
            }
            if(A[j]%2!=0){
                j--;
            }
        }
        return A;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_34446716/article/details/86034373