905. Sort Array By Parity

描述

Given an array A of non-negative integers, return an array consisting of all the even elements of A, followed by all the odd elements of A.

You may return any answer array that satisfies this condition.

Example 1:

Input: [3,1,2,4]
Output: [2,4,3,1]
The outputs [4,2,3,1], [2,4,1,3], and [4,2,1,3] would also be accepted.

Note:

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

思路

我们可以借鉴一下快排的思想,设两个指针i,j分别指向数组头,数组尾,然后检查i指向的如果是偶数,i++,j如果指向的是奇数,j–,如果遇到了i指向奇数,j指向偶数,则两个交换一下。看了一下讨论区的代码,大体都是这么做的。

代码

class Solution {
public:
    vector<int> sortArrayByParity(vector<int>& A) {
        int i = 0;
        int j = A.size()-1;
        int tmp;
        while(i<j)//停止条件
        {
            while(A[i]%2==0)//找到i指向的奇数
                i++;
            while(A[j]%2==1)//找到j指向的偶数
                j--;
            if(i<j)//如果没有发生越界,i,j交换一下
            {
                tmp = A[i];
                A[i] = A[j];
                A[j] = tmp;
                i++;
                j--;
            }
           
        }
        return A;
        
    }
};
    原文作者:美不胜收oo
    原文地址: https://www.jianshu.com/p/f5f2b1a89ce8
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞