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