美文网首页
剑指Offer第13题-调整数组顺序使奇数位于偶数前面

剑指Offer第13题-调整数组顺序使奇数位于偶数前面

作者: Joseph_Chu | 来源:发表于2018-05-20 17:35 被阅读0次

题目

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

思路

简单版

新建两个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

相关文章

网友评论

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

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