每日一题20201112(922. 按奇偶排序数组 II)

题目链接: 922. 按奇偶排序数组 II

image.png

思路

很简单,搞懂问题的核心就行,假设现在有奇数在偶数位上,偶数在奇数位上。

那么我们要做的就是,找到分别在对方位置上的数字,然后交换他们就行。
class Solution:
    def sortArrayByParityII(self, A: List[int]) -> List[int]:
        # 判断数组大小是否小于等于1,是则直接返回数组
        if len(A) <= 1:
            return A
        # 定义2个指针,i指向第一个偶数位,j指向第一个奇数位
        i, j = 0, 1
        # 循环结束的条件是i或者j超出数组范围
        while i < len(A) and j < len(A):
            # i不是偶数位且j不是奇数位 直接交换,并把i j分别挪到下一个位置
            if A[i] % 2 == 1 and A[j] % 2 == 0:
                A[i], A[j] = A[j], A[i]
                i += 2
                j += 2
            # i不是偶数, j是奇数 那么j去下一个位置
            elif A[i] % 2 == 1:
                j += 2
            # j不是奇数 i去下一个位置
            elif A[j] % 2 == 0:
                i += 2
            # i j位置都正确
            else:
                i += 2
                j += 2
        return A

image.png

原文地址:https://www.cnblogs.com/we8fans/p/14011403.html