力扣905:按奇偶排序数组

本文介绍了如何使用Python实现三种不同的方法来按奇偶性对非负整数数组进行排序:临时空间、双指针技巧和自定义排序函数。通过示例和详细解释,展示了如何高效地分离并重新排列数组中的偶数和奇数元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
905. 按奇偶排序数组
题目描述:

给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。
你可以返回满足此条件的任何数组作为答案。

示例:

输入:[3,1,2,4]
输出:[2,4,3,1]
输出 [4,2,3,1][2,4,1,3][4,2,1,3] 也会被接受。

提示:

1 <= A.length <= 5000
0 <= A[i] <= 5000

解法一:临时空间

class Solution {
public:
    vector<int> sortArrayByParity(vector<int>& nums) {
    vector<int>jie;   //创建临时空间,依次填充奇数偶数
    for(int i:nums){
        if(!(i&1))jie.emplace_back(i);
    }
    for(int i:nums){
        if(i&1)jie.emplace_back(i);
    }
    return jie;
    }
};

解法二:双指针
核心思想
双指针,左指针遇到偶数就跳过,右指针遇到奇数就跳过,当左指针为奇数及右指针为偶数时,进行交换。

class Solution {
public:
    vector<int> sortArrayByParity(vector<int>& nums) {
    int left=0,right=nums.size()-1;
    while(left<right){
        if((nums[left]&1)>(nums[right]&1))swap(nums[left],nums[right]);        
        if((nums[left]&1)==0)left++;
        if(nums[right]&1)right--;
    }      //注意:位运算符号优先级低于比较符
    return nums;
    }
};

解法三:自定义排序

class Solution {
public:
    vector<int> sortArrayByParity(vector<int>& nums) {
    sort(nums.begin(),nums.end(),[&](int a,int b){
    return (a&1)<(b&1);//注意优先级
    });
    return nums;
    }
};

结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0<Solving)1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值