题目:
给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。
对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。
你可以返回任何满足上述条件的数组作为答案。
解答:
方法一:
时间复杂度:O(n)
空间复杂度:O(n)
class Solution:
def sortArrayByParityII(self, A: List[int]) -> List[int]:
n=len(A)
res=[0]*n
eidx=0
oidx=1
for i in range(n):
if A[i]%2==0:
res[eidx]=A[i]
eidx+=2
else:
res[oidx]=A[i]
oidx+=2
return res
方法二:
时间复杂度:O(n)
空间复杂度:O(1)
class Solution:
def sortArrayByParityII(self, A: List[int]) -> List[int]:
n=len(A)
oidx=1
for i in range(0,n,2):
#偶数位遇到了奇数
if A[i]%2==1:
#在奇数位寻找偶数,并交换
while A[oidx]%2!=0:
oidx+=2
A[i],A[oidx]=A[oidx],A[i]
return A