LeetCode 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. 1 <= A.length <= 5000
  2. 0 <= A[i] <= 5000

水题,没什么好说的;

自己的思路是新建数组,然后通过首尾指针进行判断加入,偶数加在头部,奇数加在尾部;

class Solution {
public:
    vector<int> sortArrayByParity(vector<int>& A) {
        vector<int>n(A.size());
        int index_1=0;
        int index_2=A.size()-1;
        for(int i=0;i<A.size();i++){
            if(A[i]%2==0){
                n[index_1++]=A[i];
            }else{
                n[index_2--]=A[i];
            }
        }
        return n;
    }
};

有一个老哥思路很秀,不用新开数组,设置一个头指针i,在对数组进行便利的时候,直接将偶数放在i处,之后i++,所以保证0~i的元素都为偶数,而剩余的就是奇数;

    vector<int> sortArrayByParity(vector<int> &A) {
        for (int i = 0, j = 0; j < A.size(); j++)
            if (A[j] % 2 == 0) swap(A[i++], A[j]);
        return A;
    }

猜你喜欢

转载自blog.csdn.net/InNoVaion_yu/article/details/88352658
今日推荐