美文网首页
[剑指Offer]调整数组顺序使奇数位于偶数前面

[剑指Offer]调整数组顺序使奇数位于偶数前面

作者: Sui_Xin | 来源:发表于2019-03-04 21:19 被阅读0次

本文首发于我的个人博客Suixin’s Blog
原文: https://suixinblog.cn/2019/03/target-offer-reorder-array.html  作者: Suixin

题目描述

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

代码

Python(2.7.3)

  1. 最简单的办法就是利用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

  2. 如果要求不能使用额外的空间,那么可以借鉴冒泡排序的思想。如果当前数为偶数,后一个数为奇数,则相互交换。

    # -*- 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

相关文章

网友评论

      本文标题:[剑指Offer]调整数组顺序使奇数位于偶数前面

      本文链接:https://www.haomeiwen.com/subject/hbpwuqtx.html