您好,登錄后才能下訂單哦!
題目描述
輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有的奇數位于數組的前半部分,所有的偶數位于數組的后半部分,并保證奇數和奇數,偶數和偶數之間的相對位置不變。
class Solution:
def reOrderArray(self, array):
if not array:
return array
p = -1 # 定位下一個奇數應該在的位置
for i in range(len(array)):
if array[i] & 1 != 0: # 如果是奇數
p += 1
if i != p: # 當前奇數不在應在的位置,需要執行交換
array[i], array[p] = array[p], array[i]
# 交換后需要保證偶數的順序不變
# 1, 2, 4, 6, 5, 7
# |
# 1, 5, 4, 6, 2, 7 第一次交換后偶數的順序發生變化,需要調整還原
# |
# 1, 5, 4, 2, 6, 7 將交換后的偶數往前挪的次數就是i和p之間的距離-1
# |
# 1, 5, 2, 4, 6, 7
for x in range(i, p + 1, -1):
array[x], array[x - 1] = array[x - 1], array[x]
return array
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。