给定一个A非负整数数组,返回一个由所有偶数元素组成的数组A,后跟所有奇数元素A

您可以返回满足此条件的任何答案数组。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

例1:

输入:[3,1,2,4] 
输出:[2,4,3,1] 产出[4,2,3,1],[2,4,1,3]和[4,2,1,3]也将被接受。 

 

注意:

  1. 1 <= A.length <= 5000
  2. 0 <= A[i] <= 5000
解法1:
设置i为数组首位下标,j为数组末尾下标,当数组下标为i的值为奇数,同时数组下标为j的值为偶数时位置互换,同时i向后移动,j向前移动;若数组下标i的值仅为偶数时i向后移动,其他情况下j向前移动。
 public static  int[] sortArrayByParity(int[] A)
    {
          int i=0,j=A.length-1;
          while(i<j)
          {
              if (A[i]%2==1&&A[j]%2==0)
              {
                  int temp=A[i];
                  A[i]=A[j];
                  A[j]=temp;
                  i++;
                  j--;
              }else if (A[i]%2==0)
              {
                  i++;
              }else {
                  j--;
              }
          }
        return A;
    }
改进后:
  public static  int[] sortArrayByParity(int[] A)
    {
          int i=0,j=A.length-1;
          while(i<j)
          {
              if (A[i]%2==0)
              {
                  i++;
              }else {
                  if (A[j]%2==0){
                      int temp=A[i];
                      A[i]=A[j];
                      A[j]=temp;
                  }
                  j--;
              }
          }
        return A;
    }

解法2:
设置一个跟A容量大小相同的新数组,将A中的偶数从数组首位开始放入,将A中的奇数从末尾开始放入
public int[] sortArrayByParity(int[] A) {
        int[] B = new int[A.length];
        int oddNumber = 0,evenNumber = A.length - 1;
        for (int i=0;i<A.length;i++) {
            if (A[i]%2 == 0) {
                B[oddNumber++] = A[i];
            } else {
                B[evenNumber--] = A[i];
            }
        }
        return B;
    }

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄