本文首发于我的个人博客Suixin’s Blog
原文: https://suixinblog.cn/2019/03/target-offer-reorder-array.html 作者: Suixin
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
代码
Python(2.7.3)
-
最简单的办法就是利用Python的优点,不用排序直接将奇数和偶数拿出来存放,再合并到一起。
# -*- coding:utf-8 -*- class Solution: def reOrderArray(self, array): # write code here l1, l2 = [], [] for i in array: if i % 2 == 0: l2.append(i) else: l1.append(i) return l1 + l2
运行时间:23ms
占用内存:5624k
-
如果要求不能使用额外的空间,那么可以借鉴冒泡排序的思想。如果当前数为偶数,后一个数为奇数,则相互交换。
# -*- coding:utf-8 -*- class Solution: def reOrderArray(self, array): # write code here size = len(array) for i in range(size): for j in range(size - 1, i, -1): if array[j - 1] % 2 == 0 and array[j] % 2 == 1: tmp = array[j - 1] array[j - 1] = array[j] array[j] = tmp return array
运行时间:31ms
占用内存:5736k