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;
    }
  • 相关阅读:
    Linux下面编译安装ffmpeg
    Fidder简单使用方法(HTTPS抓取和url替换)
    关于一下个阶段的计划
    JAVA的随机的字符串的封装(基本上够用了)
    Shell Script中的间接变量引用
    进程概念
    int main(int argc, char *argv[])的解读
    存储数组数据到SharedPreferences
    C语言中的基本声明
    C中关于指针数组的用法
  • 原文地址:https://www.cnblogs.com/learning-c/p/9788102.html
Copyright © 2011-2022 走看看