Leetcode 922. Sort Array By Parity II

题目

链接:https://leetcode.com/problems/sort-array-by-parity-ii/

**Level: ** Easy

Discription:

Given an array A of non-negative integers, half of the integers in A are odd, and half of the integers are even.

Sort the array so that whenever A[i] is odd, i is odd; and whenever A[i] is even, i is even.

You may return any answer array that satisfies this condition.

Example 1:

Input: [4,2,5,7]
Output: [4,5,2,7]
Explanation: [4,7,2,5], [2,5,4,7], [2,7,4,5] would also have been accepted.

Note:

  • 2 <= A.length <= 20000
  • A.length % 2 == 0
  • 0 <= A[i] <= 1000

代码

class Solution {
public:
    vector<int> sortArrayByParityII(vector<int>& A) {
        int index0=1;
        int index1=0;
        while(index0<A.size() && index1<A.size())
        {
            if(!(A[index0]%2==0))
            {
                index0+=2;
                continue;
            }    
            if(!(A[index1]%2==1))
            {
                index1+=2;
                continue;
            }
            swap(A[index0],A[index1]);
            index0+=2;
            index1+=2;
        }
        return A;
    }
};

思考

  • 算法时间复杂度为O(N),空间复杂度为O(1)。
  • 双指针
原文地址:https://www.cnblogs.com/zuotongbin/p/10214457.html