2020-06-23
1.题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所
有偶数位于数组的后半部分。
2.题解
双指针,从前往后找到第一个偶数,从后向前找到第一个奇数,然后进行交换即可。
3.代码
class Solution {
public:
vector<int> exchange(vector<int>& nums) {
int len=nums.size();
if (len==0) return vector<int>(0);
int l=0,h=len-1;
while (l<h){
while (l<h&&nums[l]&1) l++;
while (l<h&&!(nums[h]&1)) h--;
if (l<h){
int t=nums[l];
nums[l]=nums[h];
nums[h]=t;
}
}
return nums;
}
};
本文介绍了一种使用双指针技术的高效算法,用于将数组中的奇数和偶数分别放置于数组的前半部分和后半部分。通过前后两个指针的移动,算法能够快速完成奇偶数的分离,无需额外的空间。
374

被折叠的 条评论
为什么被折叠?



