C++Leetcode905:按奇偶排序数组

题目
给定一个非负整数数组 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、两次遍历。第一次将偶数放入数组中,第二次将奇数放入数组中。
2、一次遍历。新建一个和A一样大小的数组res初始化为0,将偶数放入前面,奇数放入后面。

实现方法
一、两次遍历

class Solution {
public:
    vector<int> sortArrayByParity(vector<int>& A) {
        vector<int> res;
        for(int k:A){
            if(k%2==0)
                res.push_back(k);
        }
        for(int k:A){
            if(k%2==1)
                res.push_back(k);
        }
        return res;
    }
};

二、一次遍历。

class Solution {
public:
    vector<int> sortArrayByParity(vector<int>& A) {
        vector<int> res(A.size(),0);
        int l=0,r=A.size();
        for(int i=0;i<A.size();i++){
            if(A[i]%2==0)
                res[l++]=A[i];
            else
                res[--r]=A[i];
        } 
        return res;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_43434305/article/details/87931760