码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-04-16 22:54:56      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:if判断   code   接受   length   三次   int   长度   说明   查找   

给定一组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

标签:if判断   code   接受   length   三次   int   长度   说明   查找   

原文地址:https://www.cnblogs.com/dloading/p/10720646.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!