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; } }