1.辅助数组
class Solution {
public:
vector<int> exchange(vector<int>& nums) {
vector<int> odd; //保存奇数
vector<int> even; //保存偶数
for (int i = 0; i < nums.size(); ++i) {
if (nums[i] % 2)
odd.push_back(nums[i]);
else
even.push_back(nums[i]);
}
int pos = 0;
for (int e : odd)
nums[pos++] = e;
for (int e : even)
nums[pos++] = e;
return nums;
}
};
2.双指针
class Solution {
public:
vector<int> exchange(vector<int>& nums) {
int l = 0, r = nums.size() - 1;
while (l < r) {
if (nums[l] % 2)
l++;
else
swap(nums[l], nums[r--]); //这一步l没有变,因为无法确定交换过去的是否是奇数
}
return nums;
}
};
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
最新推荐文章于 2024-10-18 10:39:20 发布
这篇博客介绍了两种调整数组顺序的方法,使得奇数元素位于偶数元素之前。第一种方法使用了辅助数组,分别存储奇数和偶数,然后回填到原始数组中。第二种方法采用双指针技术,通过一个指针从左向右遍历奇数,另一个指针从右向左遍历偶数进行交换。这两种方法都有效地实现了数组的重构。
摘要由CSDN通过智能技术生成