美文网首页
Leetcode922. 按奇偶排序数组

Leetcode922. 按奇偶排序数组

作者: LonnieQ | 来源:发表于2019-11-11 21:00 被阅读0次

    题目

    给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。

    对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。

    你可以返回任何满足上述条件的数组作为答案。

    示例:

    输入:[4,2,5,7]
    输出:[4,5,2,7]
    解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。
    

    提示:

    2 <= A.length <= 20000
    A.length % 2 == 0
    0 <= A[i] <= 1000
    

    解题思路

    使用两个指针,一个指针指向偶数序号的元素,另一个指针指向奇数序号的元素。每次都增加2,直到找到需要替换的元素。

    C++解法

    class Solution {
    public:
        vector<int> sortArrayByParityII(vector<int>& A) {
            int i = 0, j = 1;
            while (i < A.size() && j < A.size()) {
                while (i < A.size() && A[i] % 2 == 0) i += 2;
                while (j < A.size() && A[j] % 2 == 1) j += 2;
                if (i < A.size() && j < A.size()) {
                    A[i] ^= A[j];
                    A[j] ^= A[i];
                    A[i] ^= A[j];
                }
            }
            return A;
        }
    };
    

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/sort-array-by-parity-ii

    相关文章

      网友评论

          本文标题:Leetcode922. 按奇偶排序数组

          本文链接:https://www.haomeiwen.com/subject/dcjxictx.html