输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
首先开辟两个列表,分别保存奇偶数,再把两个列表合在一起。这个空间复杂度很大,所以用一个队列用分别头尾入队列的方式来保存奇偶数。
# -*- coding:utf-8 -*-
from collections import deque
class Solution:
def reOrderArray(self, array):
# write code here
odd = deque()
l = len(array)
for i in range(l):
# 奇数从头部进队列,为了保证奇数之间的相对位置不变,尾部的奇数要先进队列。
if array[l-i-1] % 2 != 0:
odd.appendleft(array[-i-1])
if array[i] % 2 == 0:
odd.append(array[i])
return list(odd)
还可以不开辟新的队列,就在原来的列表上操作。把全部奇数取出来(剩下的就是全部是偶数了,而且顺序不变),之后再让它从头部入队列(列表)。
# -*- coding:utf-8 -*-
class Solution:
def reOrderArray(self, array):
# write code here
boarder = -1
for idx in range(len(array)):
if array[idx] % 2:
boarder += 1
array.insert(boarder, array.pop(idx))
return array