通过万岁!!!
- 题目:就是将一个数组中的偶数部分全部移动到前面,奇数部分全部移动到后面。
- 思路:通过双指针,左指针找到奇数以后,就去找右指针的偶数,找到以后就交换两者。如果左指针不是奇数,则左指针++。如果右指针不是偶数,则右指针–。
- 技巧:通过双指针的形式进行。
java代码
class Solution {
public int[] sortArrayByParity(int[] nums) {
int l = 0, r = nums.length - 1;// l找奇数
while (l <= r) {
if (nums[l] % 2 == 1) {// l指向奇数,与下面的偶数进行交换
while (l <= r) {
if (nums[r] % 2 == 0) {// 右指针找到了偶数
nums[l] = nums[l] + nums[r];
nums[r] = nums[l] - nums[r];
nums[l] = nums[l] - nums[r];
l++;
r--;
break;
} else {// 右指针指向奇数
r--;
}
}
} else {// l指向偶数
l++;
}
}
return nums;
}
}
- 总结:题目比较简单,就是利用双指针。这样时间复杂度是n,空间复杂度是1。