905. 按奇偶排序数组

北慕城南 提交于 2020-01-15 01:36:07

905. 按奇偶排序数组

1.题目描述

给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。你可以返回满足此条件的任何数组作为答案。
示例:
在这里插入图片描述

2.思路

维护两个指针,第一个指针指向数组的第一个数字,第二个指针指向最后一个数字,如果第一个指针指向的数字是奇数,第二个指针指向的数字是偶数则交换这两个数字。

3.代码

class Solution {
public:
    vector<int> sortArrayByParity(vector<int>& A) {
        vector<int> res;
        if(A.empty()){
            return res;
        }
        int begin = 0;
        int end = A.size()-1;

        while(begin < end){
            while(begin < end && (A[begin] & 1) == 0){//直到遇到奇数
                begin++;
            }
            while(begin < end && (A[end] & 1) == 1){//直到遇到偶数
                end--;
            }
            if(begin < end){
                swap(A[begin],A[end]);
            }
        }
        return A;
    }
};

4.复杂度分析

时间复杂度:O(n)
空间复杂度:O(1)

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!