《剑指Offer》-- 调整数组顺序使基数位于偶数前面(Python)

题目描述:

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

思路:

1、浪费空间,节省时间

def reOrderArray(array):
    if len(array) <= 1:
        return array

    Odd = list()
    Even = list()
    for i in array:
        if i % 2 == 0:
            Even.append(i)
        else:
            Odd.append(i)
    return Odd+Even

2、创建一个队列,从后往前判断是否是奇数,如果是奇数则从左边插入队列,从前往后判断是否是偶数,如果是则从右边插入队列,(虽然有点技巧性,但是感觉浪费时间同时又没有节省空间)

from collections import deque

def reOrderArray(array):
    odd = deque()
    x = len(array)
    for i in range(x):
        # 从前往后判断是否是偶数,如果是偶数则从右边添加入队列
        if array[i] %2 == 0:
            odd.append(array[i])
        
        # 从后往前判断是否是奇数,如果是奇数则从左边添加入队列
        if array[x-1-i] %2 != 0:
            odd.appendleft(array[x-1-i])
    
    return list(odd)
        

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值