"""
输入一个整数数组,实现一个函数来调整该数组中的数字的顺序,
使得所有奇数位于数组的前半部分,所有的偶数位于数组的后半部分。
"""
class Solution:
# 一个类似于快排的方法, 只是简单的满足了奇数在前,偶数在后, 奇数的顺序发生了改变
def reOrderArray(self, array):
if len(array) < 1:
return
elif len(array) == 1:
return array
front = 0
rear = len(array)-1
while front < rear:
while front < rear and array[front] & 0x1 == 1:
front += 1
while front < rear and array[rear] & 0x1 == 0:
rear -= 1
array[front], array[rear] = array[rear], array[front]
return array
def reOrderArray2(self, array):
left = [x for x in array if x & 1]
right = [x for x in array if not x & 1]
return left + right
def reOrderArray3(self, array):
if len(array) < 1:
return
if len(array) == 1:
return array
arrayOdd = []
arrayEven = []
for num in array:
if num & 0x1:
arrayOdd.append(num)
else:
arrayEven.append(num)
return arrayOdd + arrayEven
if __name__ == '__main__':
solution = Solution()
data1 = [1, 2, 3, 4, 5]
data2 = [2, 3, 4, 5, 6]
print(solution.reOrderArray(data1))
print(solution.reOrderArray(data2))
剑指offer python版 21.调整数组顺序使奇数位于偶数前面
最新推荐文章于 2022-05-14 17:20:31 发布