大家好,我是 @负雪明烛。👈👈 点击关注,优质题解不间断。

题目大意

对数组A按照偶数和奇数重新排序,使得偶数在前,奇数在后。可以返回任何一种满足这个条件的数组即可。

解题方法

自定义 sorted 函数的 cmp

看到排序就写个排序就行了,比较的 key 是对 2 取余数之后的值。这样偶数取余得 0,排在前面,奇数取余得 1,排在后面。

Python 代码如下:

  1. class Solution(object):
  2. def sortArrayByParity(self, A):
  3. """
  4. :type A: List[int]
  5. :rtype: List[int]
  6. """
  7. return sorted(A, key = lambda x : x % 2)

C++ 代码如下:

  1. bool cmp(int i, int j) {
  2. return i % 2 < j % 2;
  3. };
  4. class Solution {
  5. public:
  6. vector<int> sortArrayByParity(vector<int>& nums) {
  7. sort(nums.begin(), nums.end(), cmp);
  8. return nums;
  9. }
  10. };
  • 时间复杂度是: $O(nlogn)$
  • 空间复杂度是:$O(1)$

    总结

  1. 考察现有 API。

我是 @负雪明烛 ,刷算法题 1000 多道,写了 1000 多篇算法题解,收获阅读量 300 万。
关注我,你将不会错过我的精彩动画题解、面试题分享、组队刷题活动,进入主页 @负雪明烛 右侧有刷题组织,从此刷题不再孤单。