调整数组顺序使奇数位于偶数前面——剑指 Offer 21

文章目录

      • 题目描述
      • [法一 两次遍历](#法一 两次遍历)
      • [法二 双指针+一次遍历](#法二 双指针+一次遍历)
      • [法三 原地交换](#法三 原地交换)

题目描述

法一 两次遍历

cpp 复制代码
class Solution{
public:
	vectro<int> exchange(vector<int>& nums){
		vector<int> res;
		for(auto & num : nums){
			if(num%2==1){
				res.push_back(num);
			}
		}
		
		for(auto & num:nums){
			if(num%2==0){
				res.push_back(num);
			}
		}
		return res;
	}
}; 

法二 双指针+一次遍历

cpp 复制代码
class Solution{
public:
	vector<int> exchange(vector<int>& nums){
		int n=nums.size();
		vector<int> res(n);
		int left=0, right=n-1;
		for(auto & num : nums){
			if(num%2==1){
				res[left++]=num;
			} else {
				res[right--]=num;
			}
		}
		return res;
	}
}; 

法三 原地交换

cpp 复制代码
class Solution{
public:
	vector<int> exchange(vector<int>& nums){
		int left=0, right=nums.size()-1;
		while(left<right){
			while(left<right && nums[left]%2==1){    //注意这里是while一直往右走!
				left++;
			}
			while(left<right && nums[right]%2==0){
				right--;
			}
			if(left<right){
				swap(nums[left++], nums[right--]);
			}
		}
		return nums;
	}
}; 
相关推荐
xin007hoyo19 分钟前
算法笔记.染色法判断二分图
数据结构·笔记·算法
mozun202020 分钟前
VS BUG(6) LINK : fatal error LNK1158: 无法运行“rc.exe”
c++·bug·vs·链接器·资源文件
程序员曦曦1 小时前
17:00开始面试,17:08就出来了,问的问题有点变态。。。
自动化测试·软件测试·功能测试·程序人生·面试·职场和发展
whoarethenext1 小时前
初始https附带c/c++源码使用curl库调用
服务器·c++·qt·https·curl
cloues break.2 小时前
C++进阶----多态
开发语言·c++
এ᭄画画的北北3 小时前
力扣-234.回文链表
算法·leetcode·链表
Despacito0o3 小时前
C++核心编程:类与对象全面解析
开发语言·c++
八股文领域大手子3 小时前
深入理解缓存淘汰策略:LRU 与 LFU 算法详解及 Java 实现
java·数据库·算法·缓存·mybatis·哈希算法
__lost4 小时前
C++ 解决一个简单的图论问题 —— 最小生成树(以 Prim 算法为例)
算法·图论·最小生成树·prim算法
wuqingshun3141595 小时前
蓝桥杯 11. 打印大X
数据结构·算法·职场和发展·蓝桥杯·深度优先