【劍指offer】調整陣列使得奇數在偶數前面【python】
阿新 • • 發佈:2018-12-19
題目:輸入一個整數陣列,實現一個函式來調整該陣列中數字的順序,使得所有的奇數位於陣列的前半部分,所有的偶數位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。 看到這個二分類問題,首先想到快速排序的partition函式,但是這個又有點不同 如果不需要保證相對位置不變,可以採用時間複雜度O(N),空間O(1)的解法,採用兩個指標,如果偶數在前,則交換順序。
class Solution:
def reOrderArray(self, array):
write code here
#不保證位置一致性可以換
low, high = 0, len(array) - 1
while low < high:
if low < high and array[low] & 0x1 == 1:
low += 1
if low < high and array[high] & 0x1 == 0:
high -= 1
if low < high:
array[low], array[high] = array[high], array[low]
如果需要保證一致性:
Num = []
for i in range(len(array)):
if array[i] & 0x1 == 1:
Num.append(array[i])
for i in range(len(array)):
if array[i] & 0x1 == 0:
Num.append(array[i])
return Num