00905 按奇偶排序數(shù)組
題目描述
給定一個(gè)非負(fù)整數(shù)數(shù)組 A
演侯,返回一個(gè)數(shù)組顺又,在該數(shù)組中 A
的所有偶數(shù)元素之后跟著所有奇數(shù)元素。
你可以返回滿足此條件的任何數(shù)組作為答案拉鹃。
示例:
輸入:[3,1,2,4]
輸出:[2,4,3,1]
輸出 [4,2,3,1]擎值,[2,4,1,3] 和 [4,2,1,3] 也會(huì)被接受慌烧。
提示:
1 <= A.length <= 5000
0 <= A[i] <= 5000
力扣地址
- https://leetcode.com/problems/sort-array-by-parity/
- https://leetcode-cn.com/problems/sort-array-by-parity/
解題報(bào)告
兩遍掃描
本題解由微信公眾號(hào)
小猿刷題
提供, 錯(cuò)誤之處, 歡迎指正.
第一遍掃描輸出偶數(shù), 第二遍掃描輸出奇數(shù).
/**
* 微信公眾號(hào)"小猿刷題"
*/
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;
}
}
偶數(shù)交換
本題解由微信公眾號(hào)
小猿刷題
提供, 錯(cuò)誤之處, 歡迎指正.
遍歷數(shù)組,將所有偶數(shù)元素依次交換到數(shù)組前列.
/**
* 微信公眾號(hào)"小猿刷題"
*/
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;
}
}
原地快排
本題解由微信公眾號(hào)
小猿刷題
提供, 錯(cuò)誤之處, 歡迎指正.
- 定義兩個(gè)指針?lè)謩e從高位(尋找偶數(shù)元素)和低位(尋找奇數(shù)元素)掃描. 尋找到交換位置.
/**
* 微信公眾號(hào)"小猿刷題"
*/
class Solution {
public static int[] sortArrayByParity(int[] A) {
int left = 0;
int right = A.length - 1;
while(left < right){
// 遍歷直到第一個(gè)偶數(shù)跳出
while(left < right && A[right] % 2 != 0){
right --;
}
// 遍歷直到第一個(gè)奇數(shù)跳出
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 按奇偶排序數(shù)組 II
題目描述
給定一個(gè)非負(fù)整數(shù)數(shù)組 A
, A
中一半整數(shù)是奇數(shù)鸠儿,一半整數(shù)是偶數(shù)屹蚊。對(duì)數(shù)組進(jìn)行排序,以便當(dāng) A[i]
為奇數(shù)時(shí)捆交,i
也是奇數(shù)淑翼;當(dāng) A[i]
為偶數(shù)時(shí), i
也是偶數(shù)品追。
你可以返回任何滿足上述條件的數(shù)組作為答案玄括。
示例:
輸入:[4,2,5,7]
輸出:[4,5,2,7]
解釋:[4,7,2,5],[2,5,4,7]肉瓦,[2,7,4,5] 也會(huì)被接受遭京。
提示:
2 <= A.length <= 20000
A.length % 2 == 0
0 <= A[i] <= 1000
力扣地址
- https://leetcode.com/problems/sort-array-by-parity-ii/
- https://leetcode-cn.com/problems/sort-array-by-parity-ii/
解題報(bào)告
本題解由微信公眾號(hào)
小猿刷題
提供, 錯(cuò)誤之處, 歡迎指正.
- 定義兩個(gè)指針,分別記錄偶數(shù)和奇數(shù)元素的位置.
- 遍歷數(shù)組把所有的偶數(shù)放進(jìn)
ans[0]
,ans[2]
泞莉,ans[4]
哪雕,奇數(shù)放進(jìn)ans[1]
,ans[3]
鲫趁,ans[5]
斯嚎,依次類推.
/**
* 微信公眾號(hào)"小猿刷題"
*/
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;
}
}