难度简单16
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
示例:
输入:nums = [1,2,3,4] 输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。
提示:
1 <= nums.length <= 50000
1 <= nums[i] <= 10000
第一次解题思路,list存储(时间超限),但是样例全部过
class Solution {
public int[] exchange(int[] nums) {
LinkedList<Integer> list = new LinkedList<>();
LinkedList<Integer> list1 = new LinkedList<>();
for(int i = 0;i<nums.length;i++){
if(nums[i] % 2 == 0)
list1.add(nums[i]);
else
list.add(nums[i]);
}
list.addAll(list1);
int [] array = new int[list.size()];
for(int i = 0;i<list.size();i++){
array[i] = list.get(i);
}
return array;
}
}
后来,嗯,就是后来,快慢指针
class Solution {
public int[] exchange(int[] nums) {
int low = 0;
int high = nums.length-1;
while(low< high){
if(low<high && nums[low] % 2!=0) low++;
if(low<high && nums[high] % 2==0) high--;
int temp = nums[low];
nums[low] = nums[high];
nums[high] = temp;
}
return nums;
}
}