zoukankan      html  css  js  c++  java
  • LeetCode 922. 按奇偶排序数组 II

    给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。

    对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。

    你可以返回任何满足上述条件的数组作为答案。

    示例:

    输入:[4,2,5,7]
    输出:[4,5,2,7]
    解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。
    

    提示:

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

    思路一:开辟两个空间,一个放奇数,一个放偶数,然后将A重新赋值。

     1 int* sortArrayByParityII(int* A, int ASize, int* returnSize){
     2     int i,m=0,n=0;
     3     int *B,*C;
     4     B=(int *)malloc((ASize/2)*sizeof(int));
     5     C=(int *)malloc((ASize/2)*sizeof(int));
     6     for(i=0;i<ASize;i++){
     7         if(A[i]%2==0){
     8             B[m++]=A[i];
     9         }else{
    10             C[n++]=A[i];
    11         }
    12     }
    13     m=0;
    14     n=0;
    15     for(i=0;i<ASize;i++){
    16         if(i%2==0){
    17             A[i]=B[m++];
    18         }else{
    19             A[i]=C[n++];
    20         }
    21     }
    22     *returnSize=ASize;
    23     return A;
    24 }

    方法二:双指针,一次遍历,偶指针遇到奇数,用奇指针找到一个偶数,对换。

     1 int* sortArrayByParityII(int* A, int ASize, int* returnSize){
     2     int i,j=1,temp;
     3     for(i=0;i<ASize;i+=2){
     4         if(A[i]%2==1){
     5             while(A[j]%2==1){
     6                 j+=2;
     7             }
     8             temp=A[i];
     9             A[i]=A[j];
    10             A[j]=temp;
    11         }
    12     }
    13     *returnSize=ASize;
    14     return A;
    15 }
  • 相关阅读:
    HTML5和CSS3的学习视频
    webpack中bundler源码编写2
    webpack中bundler源码编写
    webpack中如何编写一个plugin
    webpack多页面打包配置
    webpack中配置eslint
    webpack解决单页面路由问题
    webpack中使用WebpackDevServer实现请求转发
    webpack中typeScript的打包配置
    rsync 同步
  • 原文地址:https://www.cnblogs.com/woju/p/12748021.html
Copyright © 2011-2022 走看看