00905 按奇偶排序數組
給定一個非負整數數組 A
,返回一個數組,在該數組中 A
的全部偶數元素以後跟着全部奇數元素。java
你能夠返回知足此條件的任何數組做爲答案。數組
示例:bash
輸入:[3,1,2,4] 輸出:[2,4,3,1] 輸出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也會被接受。
提示:微信
1 <= A.length <= 5000
0 <= A[i] <= 5000
本題解由微信公衆號
小猿刷題
提供, 錯誤之處, 歡迎指正.
第一遍掃描輸出偶數, 第二遍掃描輸出奇數.spa
/** * 微信公衆號"小猿刷題" */ class Solution { public int[] sortArrayByParity(int[] A) { int[] list = new int[A.length]; int t = 0; for (int i = 0; i < A.length; i++) { if (A[i] % 2 == 0){ list[t++] = A[i]; } } for (int i = 0; i < A.length; i++) { if (A[i] % 2 == 1){ list[t++] = A[i]; } } return list; } }
本題解由微信公衆號
小猿刷題
提供, 錯誤之處, 歡迎指正.
遍歷數組,將全部偶數元素依次交換到數組前列.指針
/** * 微信公衆號"小猿刷題" */ class Solution { public static int[] sortArrayByParity(int[] A) { int offset = 0; for(int i = 0; i < A.length; i++){ if(A[i] % 2 == 0){ swap(A, i, offset++); } } return A; } public static void swap(int[] arr, int left, int right){ int tmp = arr[left]; arr[left] = arr[right]; arr[right] = tmp; } }
本題解由微信公衆號
小猿刷題
提供, 錯誤之處, 歡迎指正.
/** * 微信公衆號"小猿刷題" */ class Solution { public static int[] sortArrayByParity(int[] A) { int left = 0; int right = A.length - 1; while(left < right){ // 遍歷直到第一個偶數跳出 while(left < right && A[right] % 2 != 0){ right --; } // 遍歷直到第一個奇數跳出 while(left < right && A[left] % 2 == 0){ left ++; } swap(A, left, right); } return A; } public static void swap(int[] arr, int left, int right){ int tmp = arr[left]; arr[left] = arr[right]; arr[right] = tmp; } }
00922 按奇偶排序數組 II
給定一個非負整數數組 A
, A
中一半整數是奇數,一半整數是偶數。對數組進行排序,以便當 A[i]
爲奇數時,i
也是奇數;當 A[i]
爲偶數時, i
也是偶數。code
你能夠返回任何知足上述條件的數組做爲答案。排序
示例:leetcode
輸入:[4,2,5,7] 輸出:[4,5,2,7] 解釋:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也會被接受。
提示:rem
2 <= A.length <= 20000
A.length % 2 == 0
0 <= A[i] <= 1000
<!-- more -->
本題解由微信公衆號
小猿刷題
提供, 錯誤之處, 歡迎指正.
ans[0]
,ans[2]
,ans[4]
,奇數放進 ans[1]
,ans[3]
,ans[5]
,依次類推./** * 微信公衆號"小猿刷題" */ class Solution { public int[] sortArrayByParityII(int[] A) { int[] list = new int[A.length]; int i = 0; int j = 1; for (int x: A) { if (x % 2 == 0) { list[i] = x; i += 2; } if (x % 2 == 1) { list[j] = x; j += 2; } } return list; } }