我写了一个比较函数来排序
bool cmp(int a, int b) {
return a % 2 == 0;
}
让偶数在奇数前面,在较小的测试用例中你会得到 AC,但在较大的用例中会得到堆缓冲区溢出。
但是当我更改为
bool cmp(int a, int b) {
return a % 2 == 0 && b % 2 == 1;
}
它工作得很好,所以我想知道他们在这个问题上有什么不同。这个问题在leetcode上,链接如下。 https://leetcode.com/problems/sort-array-by-parity/description/
这是我解决这个问题的完整代码
// bool cmp(int a, int b) {
// return a % 2 == 0;
// }//wrong method
// bool cmp(int a, int b) {
// return a % 2 == 0 && b % 2 == 1;
// }//AC method
class Solution {
public:
vector<int> sortArrayByParity(vector<int>& nums) {
sort(nums.begin(),nums.end(),cmp);
return nums;
}
};
我认为这两个功能都可以满足问题的要求。我想知道为什么会有这样的差异。