題目
給定一個(gè)非負(fù)整數(shù)數(shù)組 A, A 中一半整數(shù)是奇數(shù),一半整數(shù)是偶數(shù)。
對(duì)數(shù)組進(jìn)行排序,以便當(dāng) A[i] 為奇數(shù)時(shí),i 也是奇數(shù);當(dāng) A[i] 為偶數(shù)時(shí), i 也是偶數(shù)。
你可以返回任何滿足上述條件的數(shù)組作為答案。
示例:
輸入:[4,2,5,7]
輸出:[4,5,2,7]
解釋?zhuān)篬4,7,2,5],[2,5,4,7],[2,7,4,5] 也會(huì)被接受。
提示:
2 <= A.length <= 20000
A.length % 2 == 0
0 <= A[i] <= 1000
來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/sort-array-by-parity-ii
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
解題思路
首先申請(qǐng)一個(gè)相同大小的數(shù)組,并使用兩個(gè)指針記錄位置:
指針1, 偶數(shù)的位置
指針2: 奇數(shù)的位置
遍歷數(shù)組,當(dāng)為奇數(shù)的時(shí)候賦值,移動(dòng)指針2;否則操作指針1.
代碼
class Solution(object):
def sortArrayByParityII(self, A):
"""
:type A: List[int]
:rtype: List[int]
"""
p1 = 0
p2 = 1
res = [0] * len(A)
for i in range(len(A)):
if A[i] % 2 == 0:
res[p1] = A[i]
p1 += 2
else:
res[p2] = A[i]
p2 += 2
return res