題目描述
輸入一個整數(shù)數(shù)組,實現(xiàn)一個函數(shù)來調(diào)整該數(shù)組中數(shù)字的順序,使得所有的奇數(shù)位于數(shù)組的前半部分,所有的偶數(shù)位于數(shù)組的后半部分,并保證奇數(shù)和奇數(shù),偶數(shù)和偶數(shù)之間的相對位置不變。
十年的莊浪網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都營銷網(wǎng)站建設的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調(diào)整莊浪建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)公司從事“莊浪網(wǎng)站設計”,“莊浪網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
class Solution:
def reOrderArray(self, array):
if not array:
return array
p = -1 # 定位下一個奇數(shù)應該在的位置
for i in range(len(array)):
if array[i] & 1 != 0: # 如果是奇數(shù)
p += 1
if i != p: # 當前奇數(shù)不在應在的位置,需要執(zhí)行交換
array[i], array[p] = array[p], array[i]
# 交換后需要保證偶數(shù)的順序不變
# 1, 2, 4, 6, 5, 7
# |
# 1, 5, 4, 6, 2, 7 第一次交換后偶數(shù)的順序發(fā)生變化,需要調(diào)整還原
# |
# 1, 5, 4, 2, 6, 7 將交換后的偶數(shù)往前挪的次數(shù)就是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