题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
解题思路:使用两个指针,第一个指针初始化指向数组的第一个数字,从前向后移动,遇到偶数就停下来;第二个指针指向数组的最后一个数字,从后向前移动,遇到奇数就停下来,交换两个指针指向的元素,直到两个指针相遇。
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)