0
点赞
收藏
分享

微信扫一扫

力扣 922. 按奇偶排序数组 II

  1. 按奇偶排序数组 II

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

思路一:
用俩列表分别接受奇数偶数,然后分别提取

from typing import List
class Solution:
def sortArrayByParityII(self, A: List[int]) -> List[int]:
lis1 = [] #记录奇数
lis2 = [] #记录偶数
for i in A:
if i % 2 :
lis1.append(i)
continue
lis2.append(i)
lis = []
for i in range(len(A)//2):
x = lis2[i]
y = lis1[i]
lis.append(x)
lis.append(y)
return lis

print(Solution.sortArrayByParityII(1,[4,2,5,7]))

力扣 922. 按奇偶排序数组 II_算法
思路二:
双指针,一个指偶数一个指奇数

from typing import List

class Solution(object):
def sortArrayByParityII(self, A):
"""
:type A: List[int]
:rtype: List[int]
"""
pEven = 0
pOdd = 1
while pEven < len(A) and pOdd < len(A):
if A[pEven] % 2 != 0 and A[pOdd] % 2 != 1:
A[pEven], A[pOdd] = A[pOdd], A[pEven]
pEven += 2
pOdd += 2
elif A[pEven] % 2 != 0:
pOdd += 2
else:
pEven += 2
return A
print(Solution.sortArrayByParityII(1,[4,2,5,7]))

力扣 922. 按奇偶排序数组 II_奇偶排序_02


举报

相关推荐

0 条评论