调整数组顺序使奇数位于偶数前面

调整数组顺序使奇数位于偶数前面_牛客网

https://www.nowcoder.com/practice/beb5aa231adc45b2a5dcc5b62c93f593?tpId=13&tqId=11166&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
错误做法:未考虑顺序不变

def reOrderArray(self, array):
    # write code here
    left = 0
    right = len(array) - 1
    flag_l = 0
    flag_r = 0
    while left < right:
        if flag_l == 1 and flag_r == 1:
            array[left], array[right] = array[right], array[left]
        if array[left] % 2 == 0:
            flag_l = 1
        else:
            left += 1
            flag_l = 0
        if array[right] % 2 != 0:
            flag_r = 1
        else:
            right -= 1
            flag_r = 0
    return array

考虑顺序变化,使用额外空间,一个存奇数,一个存偶数:

o = []
e = []
for i in array:
    if i % 2 == 1:
        o.append(i)
    else:
        e.append(i)
return o + e

不使用额外空间,前奇数后偶数就交换,类似冒泡排序,复杂度O(n*2):

    for i in range(0,len(array)):
        for j in range(len(array)-1,i,-1):
            if array[j-1]%2 ==0 and array[j]%2==1:
                array[j],array[j-1] = array[j-1], array[j]
    return array
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-10 11:45
你不要过来啊啊啊啊啊啊啊
码农索隆:对面:“今天你不面也得面”
点赞 评论 收藏
分享
风中翠竹:真的真的真的没有kpi。。。面试官是没有任何kpi的,捞是真的想试试看这个行不行,碰碰运气,或者是面试官比较闲现在,没事捞个人看看。kpi算HR那边,但是只有你入职了,kpi才作数,面试是没有的。
双非有机会进大厂吗
点赞 评论 收藏
分享
门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
你的秋招第一场笔试是哪家
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务