奇偶分割数组
题目:
描述
分割一个整数数组,使得奇数在前偶数在后。
答案不唯一。你只需要给出一个合法的答案。
样例
样例1:
输入: [1,2,3,4]
输出: [1,3,2,4]
样例2:
输入: [1,4,2,3,5,6]
输出: [1,3,5,4,2,6]
解题思路:有一种直观的思路是生成一个临时数组然后分别将奇偶数放进临时数组,另一种思路是运用快速选择将奇偶数分割开来
public class Solution {
/*
* @param nums: an array of integers
* @return: nothing
*/
public void partitionArray(int[] nums) {
// write your code here
int len = nums.length;
if(len == 0) {
return ;
}
int i = 0, j = len - 1;
while(i < j) {
while(i < j && nums[i] % 2 == 1) {
i++;
}
while(i < j && nums[j] % 2 == 0) {
j--;
}
if(i < j) {
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
}
}
}