题目
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
思路
简单版
新建两个list , 一个存奇数,一个存偶数,然后遍历list,将奇数放入奇数的list,偶数放入偶数的list,最后将两个list拼接
思路很直观,缺点是空间复杂度会高一些
插入排序版
直接遍历list,遇到奇数就将其插入到list头部,之前插入的奇数后面
代码
直观版
class Solution:
def reOrderArray(self, array):
# write code here
odd = []
even = []
for item in array:
if item % 2 == 1:
odd.append(item)
else:
even.append(item)
return odd + even
# return odd.extend(even)
插入排序版
class Solution:
def reOrderArray(self, array):
# write code here
odd_tail = 0
for i in range(len(array)):
if array[i] % 2 == 1:
array.insert(odd_tail, array[i])
del array[i+1]
odd_tail += 1
return array