1. 程式人生 > >922-按奇偶校驗排序數組II

922-按奇偶校驗排序數組II

同時 交換 turn 使用 == div 接受 奇數 說明

給定一組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