zoukankan      html  css  js  c++  java
  • 922. Sort Array By Parity II

    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:

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

    题目说有一半是奇数,一半是偶数。这是一个简化。降低了处理边界的难度。

    #include<vector>
    #include <cstdlib>
    #include<iostream>
    #include <unordered_set>
    #include <algorithm>
    #include<string>
    #include<queue>
    
    using namespace std;
    
    //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 i = -1;
            int n = A.size();
            for (int j = 0; j < n; j = j + 2) {
                if (A[j] % 2 == 0) {
                    continue;
                } else {
                    //A[j]%2==1 at this moment
                    i += 2;
                    while (A[i] % 2 == 1)
                        i += 2;
                    //A[i]%2==0 at this monent
                    //cout << "i " << i << " j " << j << endl;
                    swap(A[i], A[j]);
                }
            }
            return A;
        }
    };
    
    int main() {
    
        Solution solution;
        vector<int> A{4, 2, 5, 7};
        vector<int> res = solution.sortArrayByParityII(A);
        for (auto a:res)
            cout << a << " ";
        cout << endl;
        return 0;
    }
  • 相关阅读:
    Python并发编程—自定义线程类
    Python并发编程—线程对象属性
    syfomny 好教材....
    drupal_get_css -- drupal
    common.inc drupal
    date iso 8610
    js很好的教材
    user_load_by_name
    eck add form
    把一个表导入到另一个地方...
  • 原文地址:https://www.cnblogs.com/learning-c/p/9788102.html
Copyright © 2011-2022 走看看