20250204力扣每日一题
知识点
-
&
按位与操作符可以用来判断奇偶,一个整型数字&
1- 如果结果是1,那么说明这个数字是奇数
- 如果结果是0,那么说明这个数字是偶数
解题思路
我的做法
- 将整个
nums
数组遍历一遍,找出所有的奇数元素和偶数元素,并将它们分别输入进新开的奇数数组和偶数数组 - 轮流将奇数数组和偶数数组输入到
ans
数组中,并返回ans
数组
双指针做法
- 分别初始化两个指针
i
和j
指向奇数和偶数,遍历原数组。 - 如果遍历到了不符合位置的奇数,就开始遍历寻找不符合位置的偶数,并将其交换位置
实现代码
我的做法
class Solution {
public:
vector<int> sortArrayByParityII(vector<int>& nums) {
vector<int> a, b;
for(auto num: nums){
if(num & 1){
// 奇数
a.push_back(num);
}else{
// 偶数
b.push_back(num);
}
}
int n = nums.size() / 2;
vector<int> ans;
for(int i = 0; i < n; i ++){
ans.push_back(b[i]);
ans.push_back(a[i]);
}
return ans;
}
};
双指针做法
class Solution {
public:
vector<int> sortArrayByParityII(vector<int>& nums) {
int n = nums.size();
for(int i = 0,j = 1; i < n; i += 2){
if(nums[i] & 1){
while(nums[j] & 1){
j += 2;
}
swap(nums[i], nums[j]);
}
}
return nums;
}
};
Enjoy Reading This Article?
Here are some more articles you might like to read next: