题目
https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/
参考资料
vector容器 常用函数
快速排序详解
交换vector的两个元素(两种方法)
https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/comments/1288169
思路要点
代码
//本来是想逐个插入,但是超时了 错误
class Solution {
public:
vector<int> exchange(vector<int>& nums) {
vector<int> ans;
for(int i=0;i<nums.size();i++){
if(nums[i]%2==0){
ans.push_back(nums[i]);
}
else{
ans.insert(ans.begin(),nums[i]);
}
}
return ans;
}
};
//看了评论,用两个数组,然后再用插入函数
class Solution {
public:
vector<int> exchange(vector<int>& nums) {
vector<int> ans;
vector<int> ans2;
for(int i=0;i<nums.size();i++){
// cout<<nums[i]<<' ';
if(nums[i]%2==0){
ans2.push_back(nums[i]);
}
else{
ans.push_back(nums[i]);
}
}
ans.insert(ans.end(),ans2.begin(),ans2.end());
return ans;
}
};
//快速排序的思想 双指针
class Solution {
public:
vector<int> exchange(vector<int>& nums) {
int left=0;
int right=nums.size()-1;
while(left<right){
while(left<right&&nums[left]%2==1){
left++;
}
while(left<right&&nums[right]%2==0){
right--;
}
if(left>=right) break;
swap(nums[left],nums[right]);
}
return nums;
}
};