zoukankan      html  css  js  c++  java
  • 《剑指offer》【调整数组顺序使奇数位于偶数前面】(python版)

    题目描述:
    输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分

    思路:
    我认真看了一下,题目应该是要求在原地调整,所以这里不能再开辟一个数组
    第一种:从头往尾扫描数组,遇到一个偶数就把它提出来,依次把其后的数字前移一格,最后将偶数插入末尾的空位。时间复杂度为O(n2)

    第二种:采用两指针分别从首尾出发,当头指针遇到一个偶数,并且尾指针遇到一个奇数时,交换两指针的数字,直到两指针相遇。时间复杂度为O(n),(类似于快排)

    实现代码:

    # -*- coding:utf-8 -*-
    class Solution:
        def reOrderArray(self, array):
            # write code here
            p = 0
            q = len(array)-1
            while p < q:
                if array[p] % 2 == 0:
                    if array[q] % 2 == 1:
                        array[p],array[q] = array[q],array[p]
                    q -= 1
                    continue
                p += 1
            return array
    
    def reOrderArray(self, array):
            n = len(array)
            head = 0
            tail = n - 1
            while head < tail:
                while array[head]%2 != 0:
                    head += 1
                while array[tail]%2 == 0:
                    tail -= 1
                array[head], array[tail] = array[tail], array[head]
                head += 1
                tail -= 1
    
  • 相关阅读:
    在路上(转)
    我,机器
    梧桐道上
    傅盛:如何快慢“炼”金山?(转)
    [JS]笔记15之客户端存储cookie
    [JS]笔记14之事件委托
    [JS]笔记13之Date对象
    将博客搬至CSDN
    [JS]笔记12之事件机制--事件冒泡和捕获--事件监听--阻止事件传播
    [JS]笔记11之正则表达式
  • 原文地址:https://www.cnblogs.com/tianqizhi/p/9669448.html
Copyright © 2011-2022 走看看