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;
    }
  • 相关阅读:
    常用模块(time,os,sys,collections,random,序列化模块,re)
    python-函数篇
    内置函数——filter和map
    python杂七杂八的用法
    计算机硬件
    操作系统简介
    Django入门
    linux下查看cpu物理个数和逻辑个数
    python反射的妙用
    Python(文件、文件夹压缩处理模块,shelve持久化模块,xml处理模块、ConfigParser文档配置模块、hashlib加密模块,subprocess系统交互模块 log模块)
  • 原文地址:https://www.cnblogs.com/learning-c/p/9788102.html
Copyright © 2011-2022 走看看