题目描述
解法一
双指针法
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