欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

leetcode (Sort Array By Parity II)

程序员文章站 2022-07-15 09:37:56
...

Title:Sort Array By Parity II    922

Difficulty:Easy

原题leetcode地址:https://leetcode.com/problems/sort-array-by-parity-ii/

 

1.  双指针

时间复杂度:O(n),一次一层while循环,需要遍历整个数组。

空间复杂度:O(1),没有申请额外空间。

    /**
     * 双指针
     * @param A
     * @return
     */
    public static int[] sortArrayByParityII(int[] A) {

        int beginIndex = 0;
        int endIndex = A.length - 1;

        while (beginIndex <= A.length - 1 && endIndex >= 1) {

            if (A[beginIndex] % 2 == 1 && A[endIndex] % 2 == 0) {
                A[beginIndex] = A[beginIndex] + A[endIndex];
                A[endIndex] = A[beginIndex] - A[endIndex];
                A[beginIndex] = A[beginIndex] - A[endIndex];
                beginIndex += 2;
                endIndex -= 2;
            }
            else if (A[beginIndex] % 2 == 1 && A[endIndex] % 2 == 1) {
                endIndex -= 2;
            }
            else if (A[beginIndex] % 2 == 0 && A[endIndex] % 2 == 0) {
                beginIndex += 2;
            }
            else if (A[beginIndex] % 2 == 0 && A[endIndex] % 2 == 1) {
                beginIndex += 2;
                endIndex -= 2;
            }

        }

        return A;

    }