LeetCode #905 Sort Array By Parity 按奇偶排序数组

905 Sort Array By Parity 按奇偶排序数组

Description:
Given an array A of non-negative integers, return an array consisting of all the even elements of A, followed by all the odd elements of A.

You may return any answer array that satisfies this condition.

Example:

Example 1:

Input: [3,1,2,4]
Output: [2,4,3,1]
The outputs [4,2,3,1], [2,4,1,3], and [4,2,1,3] would also be accepted.

Note:

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

题目描述:
给定一个非负整数数组 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

思路:

  1. 双指针, i指向一个不为偶数的下标, j从后往前扫描到偶数就跟 i交换数组对应的值
  2. 快速排序, 选择 A[0]作为 pivot, 偶数全部放 A[0]左边, 奇数全部放 A[0]右边, 只需要一次遍历
    时间复杂度O(n), 空间复杂度O(1)

代码:
C++:

class Solution 
{
public:
    vector<int> sortArrayByParity(vector<int>& A) 
    {
        for (int i = 0, j = A.size(); i < j;) 
            if (!(A[i] & 1)) i++;
            else if (!(A[--j] & 1)) swap(A[i], A[j]);
        return A;
    }
};

Java:

class Solution {
    public int[] sortArrayByParity(int[] A) {
        int i = 0, j = A.length - 1;
        while (i < j) {
            if ((A[i] & 1) > (A[j] & 1)) swap(A, i, j);
            if ((A[i] & 1) == 0) i++;
            if ((A[j] & 1) == 1) j--;
        }
        return A;
    }
    
    private void swap(int[] A, int i, int j) {
        A[i] ^= A[j];
        A[j] ^= A[i];
        A[i] ^= A[j];
    }
}

Python:

class Solution:
    def sortArrayByParity(self, A: List[int]) -> List[int]:
        return [i for i in A if (i & 1) == 0]  + [i for i in A if (i & 1) == 1]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 9,004评论 0 2
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 12,178评论 0 10
  • # 数组部分 # 1.## array_chunk($arr, $size [, $preserve_key = ...
    clothTiger阅读 4,952评论 0 1
  • 这是一部值得我们所有男人和女人看的电影,这部电影讲了,在从古至今女性在社会上的地位,以及男性在社会上的地位。 但是...
    小县城生活日记阅读 4,097评论 2 6
  • 周末和太太带小朋友去奥莱,准备去上面的游乐场玩。没想到赶巧碰上5.20,在一楼大厅偶遇一幕求婚,现场当时人不多,因...
    李锴锴阅读 3,907评论 0 50

友情链接更多精彩内容