剑指 Offer 21.调整数组顺序使奇数位位于偶数前面
题目描述
解法一
双指针法
class Solution { public: vector<int> exchange(vector<int>& nums) { int len = nums.size(); vector<int> res(len); int left = 0, right = len -1; for (auto & num : nums) { if (num % 2 == 1) { res[left++] = num; } else { res[right--] = num; } } return res; } };
for (auto x : nums) 相当于 for (vector< int >::iterator iter = nums.begin(); iter != nums.end(); iter++)
for(auto a:b)中b为一个容器,效果是利用a遍历并获得b容器中的每一个值,但是a无法影响到b容器中的元素。
for(auto &a:b)中加了引用符号,可以对容器中的内容进行赋值,即可通过对a赋值来做到容器b的内容填充。
解法二
利用数组,遍历两次,先将奇数项放入数组,然后将偶数项放入数组
class Solution { public: vector<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; } };
参考:
https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/solution/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-en35/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现