We want to move all even numbers to the front and all odd numbers to the back. By using two pointers, we can swap misplaced elements in-place, efficiently partitioning the array.
classSolution {
publicint[]sortArrayByParity(int[] nums) {
int l = 0, r = nums.length- 1;
while (l < r) {
if (nums[l]% 2 == 0) {
l++;
} else {
int temp = nums[l];
nums[l]= nums[r];
nums[r]= temp;
r--;
}
}
return nums;
}
}
1
2
3
4
5
6
7
8
9
10
classSolution:
defsortArrayByParity(self, nums):
l, r =0, len(nums) -1while l < r:
if nums[l] %2==0:
l +=1else:
nums[l], nums[r] = nums[r], nums[l]
r -=1return nums
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
classSolution {
public: vector<int> sortArrayByParity(vector<int>& nums) {
int l =0, r = nums.size() -1;
while (l < r) {
if (nums[l] %2==0) {
l++;
} else {
swap(nums[l], nums[r]);
r--;
}
}
return nums;
}
};