0 效果
1 题目
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;
}
};