• 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;
    }
  • 相关阅读:
    illegal line end in String Iiteral错误
    mavem的tomcat插件热加载
    解决IntelliJ IDEA启动缓慢
    进行JDBC连接时增加以下代码:
    基于Reflect将List泛型数据源转换为Json字符串
    数据库还原至指定时间节点
    EF关系配置之N:N关系
    EF关系配置之1:N
    EF+Lambda查询性能测试
    EntityFramework基础框架搭建
  • 原文地址:https://www.cnblogs.com/learning-c/p/9788102.html
Copyright © 2020-2023  润新知