題目:輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有奇數位於數組的前半部分,所有偶數位於數組的後半部分。
解題思路:使用兩個指針,第一個指針初始化指向數組的第一個數字,從前向後移動,遇到偶數就停下來;第二個指針指向數組的最後一個數字,從後向前移動,遇到奇數就停下來,交換兩個指針指向的元素,直到兩個指針相遇。
class Solution:
def ReorderOddEven(self, data):
L = len(data)
if data is None or L<=0:
return False
pBegin = 0
pEnd = L-1
while pBegin<pEnd:
# 向後移動pBegin,直到它指向偶數
while pBegin<pEnd and data[pBegin]%2!=0:
pBegin += 1
# 向前移動pEnd,直到它指向奇數
while pBegin<pEnd and data[pEnd]%2==0:
pEnd -= 1
if pBegin<pEnd:
data[pBegin], data[pEnd] = data[pEnd], data[pBegin]
print(data)
return data
if __name__=="__main__":
data = [1,2,3,4,5,6,7,8]
solution = Solution()
solution.ReorderOddEven(data)