【剑指Offer】11调整数组顺序使奇数位于偶数前面

题目描述

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

时间限制:1秒;空间限制:32768K;本题知识点: 数组

解题思路

思路一

创建一个新的数组,先判断保存奇数,再判断保存偶数。

# -*- coding:utf-8 -*-
class Solution:
    def reOrderArray(self, array):
        # write code here
        l = []
        for i in range(len(array)):
            if array[i]%2==1:
                l.append(array[i])
        for i in range(len(array)):
            if array[i]%2==0:
                l.append(array[i])
        return l

思路二

# -*- coding:utf-8 -*-
class Solution:
    def reOrderArray(self, array):
        # write code here
        odd,even=[],[]
        for i in array:
            odd.append(i) if i%2==1 else even.append(i)
        return odd+even

思路三

利用lambda,python一行代码!

# -*- coding:utf-8 -*-
class Solution:
    def reOrderArray(self, array):
        # write code here
        return sorted(array,key=lambda x:x%2,reverse=True)

 

posted @ 2018-10-13 16:13  yucen  阅读(102)  评论(0编辑  收藏  举报