剑指 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/

 

posted @   盏茶  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示