922. 按奇偶排序数组 II
题目链接
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sort-array-by-parity-ii/submissions/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目分析
- 方法一
时间复杂度 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;
}
};
- 方法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;
}
};