题目
给定一个非负整数数组 nums, nums 中一半整数是 奇数 ,一半整数是 偶数 。
对数组进行排序,以便当 nums[i] 为奇数时,i 也是 奇数 ;当 nums[i] 为偶数时, i 也是 偶数 。
你可以返回 任何满足上述条件的数组作为答案 。
示例 1:
输入:nums = [4,2,5,7]
输出:[4,5,2,7]
解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。
分析
我们可以用快慢指针来解决这个问题,慢指针永远指向偶数的i,快指针永远指向奇数的i,那么当发生慢指针指向的元素是奇数快指针指向的元素是偶数的时候,交换俩个元素的位置,我们遍历数组也是为了寻找这样的俩个元素
java
public class sortArrayByParityII {
public static void main(String[] args) {
int[] arr = {4,2,5,7};
int[] brr = getSort(arr);
for(int i = 0;i<brr.length;i++) {
System.out.println(brr[i]);
}
}
public static int[] getSort(int[] arr) {
int first = 0;
int second = 1;
int len = arr.length;
while(first < len && second < len) {
if(arr[first] % 2 == 0) {
first+=2;
} else if(arr[second] % 2 ==1) {
second+=2;
} else {
int tmp = arr[first];
arr[first] = arr[second];
arr[second] = tmp;
}
}
return arr;
}
}