• 922. Sort Array By Parity II


    问题:

    重新排序给定数组,使得下标index和数值A[index]的奇偶性一致。

    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
    

      

    解法:

    使用两个游标,o:代表奇数游标,e:代表偶数游标

    遍历数组,每次递增2->始终指向奇数(偶数)index

    直到A[o]和A[e]二者的奇偶性都不与自身游标一致。则交换二者。

    (遍历到其中一个不一致,则停止移动游标,只移动另一个,一直到另一个也不一致)

    代码参考:

     1 class Solution {
     2 public:
     3     vector<int> sortArrayByParityII(vector<int>& A) {
     4         int o=1, e=0;//o:奇数,e:偶数
     5         while(o<A.size() && e<A.size()){
     6             if(A[e]%2!=0 && A[o]%2!=1){
     7                 swap(A[e], A[o]);
     8                 e+=2;
     9                 o+=2;
    10             }else{
    11                 if(A[o]%2==1) o+=2;
    12                 if(A[e]%2==0) e+=2;
    13             }
    14         }
    15         return A;
    16     }
    17 };

    简化代码写法:

    1 vector<int> sortArrayByParityII(vector<int>& A) {
    2     for (int i = 0, j = 1; i < A.size(); i += 2, j += 2) {
    3         while (i < A.size() && A[i] % 2 == 0) i += 2;
    4         while (j < A.size() && A[j] % 2 == 1) j += 2;
    5         if (i < A.size()) swap(A[i], A[j]);
    6     }
    7     return A;
    8 }
  • 相关阅读:
    为什么硬链接不能链接目录、文件inode 和目录 dentry 的区别联系
    LVM 详解
    pwd 命令详解
    type 命令详解
    查看文件中字符出现次数
    lesson
    xml linq
    新系统配置
    空合并运算符(??):
    dos.ORM配置和使用
  • 原文地址:https://www.cnblogs.com/habibah-chang/p/12957315.html
Copyright © 2020-2023  润新知