LeetCode #922. Sort Array By Parity II

题目

922. Sort Array By Parity II


解题方法

设置两个奇偶指针分别指向0和1,遍历数组,分别找到第一个不符合题意的偶数位置和奇数位置,交换元素,再找下一个这样的奇偶位置组合,直到某一个指针到达数组结尾。
时间复杂度:O(n)
空间复杂度:O(1)


代码

class Solution:
    def sortArrayByParityII(self, A: List[int]) -> List[int]:
        even = 0
        odd = 1
        
        while even < len(A) and odd < len(A):
            while even < len(A) and not A[even] % 2: even += 2
            while odd < len(A) and A[odd] % 2: odd += 2
            
            if even < len(A) and odd < len(A):
                A[even], A[odd] = A[odd], A[even]
            
            even += 2
            odd += 2
        
        return A
posted @ 2020-11-23 09:02  老鼠司令  阅读(53)  评论(0)    收藏  举报