博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer:调整数组顺序使奇数位于偶数前面
阅读量:7129 次
发布时间:2019-06-28

本文共 934 字,大约阅读时间需要 3 分钟。

题目描述

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

class Solution:    def reOrderArray(self, array):        if not array:            return array        p = -1  # 定位下一个奇数应该在的位置        for i in range(len(array)):            if array[i] & 1 != 0:  # 如果是奇数                p += 1                if i != p:  # 当前奇数不在应在的位置,需要执行交换                    array[i], array[p] = array[p], array[i]                    # 交换后需要保证偶数的顺序不变                    # 1, 2, 4, 6, 5, 7                    #       |                    # 1, 5, 4, 6, 2, 7   第一次交换后偶数的顺序发生变化,需要调整还原                    #       |                    # 1, 5, 4, 2, 6, 7   将交换后的偶数往前挪的次数就是i和p之间的距离-1                    #       |                    # 1, 5, 2, 4, 6, 7                    for x in range(i, p + 1, -1):                        array[x], array[x - 1] = array[x - 1], array[x]        return array

转载于:https://blog.51cto.com/jayce1111/2383440

你可能感兴趣的文章
广汽与蔚来达成合作,将共同投资12.8亿元创立新能源汽车公司
查看>>
量子力学,整合了三种自然相互作用力
查看>>
亚马逊新专利,让无人机运送充电器为电动车充电
查看>>
HTC将Viveport推向全球,这是要“反击”Valve的节奏?
查看>>
【深度学习不是犯罪】欧盟祭出最严数据保护法:专家解读 GDPR
查看>>
浅谈SQL Server 对于内存的管理
查看>>
喜报销发布V2.4,圣诞焕新装,新增“专项费用报销”审批,集成京东商城
查看>>
陈天奇团队新研究:自动优化深度学习工作负载
查看>>
你的无人机快递来了?小心被查“水表”
查看>>
收录 Uboot 详解
查看>>
MongoDB数据库的索引操作(转)
查看>>
线程的实现
查看>>
重建日志文件
查看>>
鱼鹰软件荣获“北京广告产业发展30周年”杰出贡献单位奖
查看>>
四、oracle基本sql语句和函数详解
查看>>
中合国创杯2017年创客中国互联网+创新创业大赛复赛成功举办 20各项目入围总决赛...
查看>>
UVAoj 11324 - The Largest Clique(tarjan + dp)
查看>>
使用Matplotlib绘制正余弦函数、抛物线
查看>>
四位辉光管时钟-学长毕设
查看>>
大话RAC介质恢复---联机日志损坏
查看>>