905. Sort Array By Parity(按奇偶排序数组)———附带思路和完整代码

时间:2022-10-20 08:55:08

0 效果

905. Sort Array By Parity(按奇偶排序数组)———附带思路和完整代码

1 题目

905. Sort Array By Parity(按奇偶排序数组)———附带思路和完整代码

2 思路

因为cmp返回值小于1的排在前面,因此只需要让两个比较的值的差(偶数恒小于奇数)就可以,让数与1做&操作,这样偶数的结果都是0,奇数的结果都是1。

3 代码

C:

int cmp2(int n){
    return n&1;
}

int cmp(const void* p1, const void* p2){
    return cmp2(*(int*)p1) - cmp2(*(int*)p2);
}

int* sortArrayByParity(int* nums, int numsSize, int* returnSize){
    qsort(nums, numsSize, sizeof(int), cmp);
    *returnSize = numsSize;
    return nums;
}

c++:

class Solution {
public:
    vector<int> sortArrayByParity(vector<int>& nums) {
        auto cmp = [](int a, int b){
            return (a&1)< (b&1);
        };
        std::sort(nums.begin(), nums.end(), cmp);
        return nums;
    }
};