题目描述:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变
思路:
1、浪费空间,节省时间
def reOrderArray(array):
if len(array) <= 1:
return array
Odd = list()
Even = list()
for i in array:
if i % 2 == 0:
Even.append(i)
else:
Odd.append(i)
return Odd+Even
2、创建一个队列,从后往前判断是否是奇数,如果是奇数则从左边插入队列,从前往后判断是否是偶数,如果是则从右边插入队列,(虽然有点技巧性,但是感觉浪费时间同时又没有节省空间)
from collections import deque
def reOrderArray(array):
odd = deque()
x = len(array)
for i in range(x):
# 从前往后判断是否是偶数,如果是偶数则从右边添加入队列
if array[i] %2 == 0:
odd.append(array[i])
# 从后往前判断是否是奇数,如果是奇数则从左边添加入队列
if array[x-1-i] %2 != 0:
odd.appendleft(array[x-1-i])
return list(odd)