922. 按奇偶排序数组Ⅱ
自己是这样写的
class Solution {
public:
vector<int> sortArrayByParityII(vector<int>& nums) {
int even = 0, odd = 1;
while (even < nums.size() && odd < nums.size())
{
if (nums[even] % 2 != 0 && nums[odd] %2 == 0)
swap(nums[even], nums[odd]);
if (nums[even] % 2 == 0)
even += 2;
if (nums[odd] % 2 != 0)
odd += 2;
}
return nums;
}
};
思路的宗旨主要是这两条:
-
把奇数排好了,偶数也就自动排好了,或者说把偶数排好了,奇数也就自动排好了。所以只需要单独考虑奇数或者偶数的排列
-
自己写的是单独考虑了偶数的排列。然后对于while循环里的内容就是分情况看要进行什么操作了,但是最重要的一条就是只有在
nums[even] % 2 != 0 && nums[odd] %2 == 0
的时候才能进行交换,其余的两个if
都只是为了找到合适的交换位置。
看了下卡哥的思路,卡哥提供了三种方法。
卡哥的方法三思维也值得看下。
卡哥方法三代码:
class Solution {
public:
vector<int> sortArrayByParityII(vector<int>& A) {
int oddIndex = 1;
for (int i = 0; i < A.size(); i += 2) {
if (A[i] % 2 == 1) { // 在偶数位遇到了奇数
while(A[oddIndex] % 2 != 0) oddIndex += 2; // 在奇数位找一个偶数
swap(A[i], A[oddIndex]); // 替换
}
}
return A;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】