刷题-Leetcode-922. 按奇偶排序数组 II

922. 按奇偶排序数组 II

题目链接

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sort-array-by-parity-ii/submissions/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题目分析

  1. 方法一
    时间复杂度 on
    空间复杂度on
    创建一个数组,奇偶各一个索引,遍历nums,将奇偶放在符合位置的数组上。
class Solution {
    
    
public:
    vector<int> sortArrayByParityII(vector<int>& nums) {
    
    
        int n = nums.size();
        vector<int> res(n);
        int evenIndex = 0;
        int oddIndex = 1;
        for(int i = 0; i < n; i++){
    
    
            if(nums[i] % 2 == 0){
    
    
                res[evenIndex] = nums[i];
                evenIndex += 2;
            }else{
    
    
                res[oddIndex] = nums[i];
                oddIndex += 2;
            }
        }
        return res;
    }
};
  1. 方法2
    时间复杂度 on
    空间复杂度o1
    在原数组上修改
class Solution {
    
    
public:
    vector<int> sortArrayByParityII(vector<int>& nums) {
    
    
        int oddIndex = 1;
        for(int i = 0; i < nums.size(); i += 2){
    
    
            if(nums[i] % 2 == 1){
    
    //在偶数位碰到了奇数
                while(nums[oddIndex] % 2 != 0) oddIndex += 2;//找奇位的偶数
                swap(nums[i], nums[oddIndex]);
            }
        }
        return nums;
    }
};

Guess you like

Origin blog.csdn.net/qq_42771487/article/details/120934215