1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| class Solution { public int[] sortArrayByParityII(int[] A) { for (int i = 0; i < A.length; i++) { if (i % 2 != A[i] % 2) { if (i % 2 == 0) { swap(A, i, nextGuy(A, i, false)); } else { swap(A, i, nextGuy(A, i, true)); } } } return A; }
private int nextGuy(int[] nums, int index, boolean flag) { if (flag) { for (int i = index + 1; i < nums.length; i++) { if (i % 2 == 0 && nums[i] % 2 != 0) { return i; } } } else { for (int i = index + 1; i < nums.length; i++) { if (i % 2 != 0 && nums[i] % 2 == 0) { return i; } } } throw new RuntimeException("IMPOSSIBLE"); }
private void swap(int[] nums, int i, int j) { int tmp = nums[i]; nums[i] = nums[j]; nums[j] = tmp; } }
|