美文网首页
每日一题20201112(922. 按奇偶排序数组 II)

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

作者: 米洛丶 | 来源:发表于2020-11-12 10:49 被阅读0次

    题目链接: 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

    相关文章

      网友评论

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

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