首页 > 其他分享 >剑指 Offer 21.调整数组顺序使奇数位位于偶数前面

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

时间:2023-03-09 19:11:43浏览次数:47  
标签:vector 21 nums res Offer 偶数 num auto shu

题目描述

 

 

 

解法一

双指针法

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/

 

标签:vector,21,nums,res,Offer,偶数,num,auto,shu
From: https://www.cnblogs.com/zc-030/p/17201093.html

相关文章