2023.9.4
本题较为简单,构造一个和nums相同大小的数组ans,然后遍历判断nums中的元素,若为奇数则放在ans中的奇数索引位置,偶数则放在ans中的偶数索引位置。
代码如下:
class Solution {
public:vector<int> sortArrayByParityII(vector<int>& nums) {vector<int> ans(nums.size());int even = 0;int odd = 1;for(int i=0; i<nums.size(); i++){if(nums[i] % 2 == 0){ans[even] = nums[i];even += 2;}else{ans[odd] = nums[i];odd += 2;}}return ans;}
};
本题也可以不使用额外空间,原地修改,代码如下:
class Solution {
public:vector<int> sortArrayByParityII(vector<int>& nums) {int odd = 1;for(int i=0; i<nums.size(); i+=2){//在偶数索引碰到奇数if(nums[i] % 2 == 1){while(nums[odd] % 2 == 1) odd += 2; //寻找 在奇数索引的偶数swap(nums[i] , nums[odd]);}}return nums;}
};