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] 也会被接受。
提示:
2 <= A.length <= 20000A.length % 2 == 00 <= 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

浙公网安备 33010602011771号