题意:一个数组,把偶数放在前面,奇数放在后面, 并且顺序不影响答案,返回一个满足条件的解就可以
https://leetcode.com/problems/sort-array-by-parity/description/
题解:对撞双指针,前面的指针遇到奇数停下来,后面的指针遇到偶数停下来,交换两个值就可以了
class Solution {
public:vector<int> sortArrayByParity(vector<int>& nums) {int n = nums.size() - 1;for(int i = 0, j = n; i < j;) {while(i < j && nums[i] % 2 == 0) {i++;}while(i < j && nums[j] % 2 != 0) {j--;}swap(nums[i], nums[j]);}return nums; }
};
算法复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( 1 ) O(1) O(1)