leetcode 922 python

922. 按奇偶排序数组 II


难度 简单 | 标签 排序 数组


Description

给定一个非负整数数组 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] 也会被接受。

 

提示:

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

 

My Solution

class Solution:
    def sortArrayByParityII(self, A: List[int]) -> List[int]:
        odd_index = 1
        even_index = 0
        while odd_index < len(A) or even_index <len(A):
            while odd_index < len(A) and A[odd_index] % 2 != 0 :
                odd_index += 2
            while even_index < len(A) and A[even_index] % 2 == 0:
                even_index += 2
            if odd_index < len(A) and even_index <len(A):
                A[odd_index],A[even_index] = A[even_index],A[odd_index]
        return A

参考方法

class Solution:
    def sortArrayByParityII(self, A: List[int]) -> List[int]:
        # 排序,奇数优先
        A.sort(key=lambda x:x%2 == 0)
        # 创建并初始化一个和A同样大的数组
        res = [0]*len(A) #表示将[0]复制len(A)次
        # 切片
        res[1::2],res[::2] = A[:len(A)//2],A[len(A)//2:]
        return res
posted @ 2021-01-29 17:40  文学是可爱的  阅读(82)  评论(0)    收藏  举报