922-按奇偶校验排序数组II

Posted dloading

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了922-按奇偶校验排序数组II相关的知识,希望对你有一定的参考价值。

给定一组A 非负整数,A中的一半整数是奇数,而整数的一半是偶数。 对数组进行排序,以便每当A[i]奇数时,i都是奇数; 无论何时A[i]均匀,i均匀。 您可以返回满足此条件的任何答案数组。

例1: 输入:[4,2,5,7]  输出:[4,5,2,7]  说明: [4,7,2,5],[2,5,4,7],[2,7,4] ,5]也将被接受。   

注意:

   2 <= A.length <= 20000     

   A.length % 2 == 0 

   0 <= A[i] <= 1000

 

解法一:使用三次while循环,第二次跟第三次分别是为了查找出数组中索引跟索引位置数组元素奇偶不同时索引的值。然后将两个索引所谓数组元素互换。
 public int[] sortArrayByParityII(int[] A) {
            int i=0;
            int j=1;
            int m=A.length;
            while(i<m&&j<m)
            {
                while (i<m&&A[i]%2==0)
                {
                    i+=2;
                }
                while (j<m&&A[j]%2==1){
                    j+=2;
                }
                if (i<m&&j<m)
                {
                    int temp=A[i];
                    A[i]=A[j];
                    A[j]=temp;
                }
            }
            return A;
        }


解法2:只使用一个while循环,此循环用于得出索引跟索引元素不同时的索引值。然后通过if判断当索引小于数组长度且偶索引元素为奇,奇索引元素为偶时交换元素。
  public int[] sortArrayByParityII(int[] A) {
            int i=0;
            int j=1;
            int m=A.length;
            while(i<m&&j<m)
            {
                if (i<m&&A[i]%2==0)
                {
                    i+=2;
                }
                if (j<m&&A[j]%2==1){
                    j+=2;
                }
                if (i<m&&j<m&&A[i]%2==1&&A[j]%2==0)
                {
                    int temp=A[i];
                    A[i]=A[j];
                    A[j]=temp;
                }
            }
            return A;
        }

 

以上是关于922-按奇偶校验排序数组II的主要内容,如果未能解决你的问题,请参考以下文章

922. 按奇偶排序数组 II

数组922. 按奇偶排序数组 II

922. 按奇偶排序数组 II

922. 按奇偶排序数组 II

LeetCode-922. 按奇偶排序数组 II

力扣(LeetCode)922. 按奇偶排序数组 II