剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

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

方法一:首尾双指针  时间复杂度O(n)  空间复杂度O(1) 

左找偶数右找奇,没有找到就位移,找到之后交换两数

 

def exchange(nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        l,r = 0,len(nums) - 1
        while l < r:
            while l < r and nums[l] & 1 == 1:
                l += 1
            while l < r and nums[r] & 1 == 0:
                r -= 1
            nums[l],nums[r] = nums[r],nums[l]
        return nums

 

方法二:拆分合并  时间复杂度O(n)  空间复杂度O(n) 

def exchange(nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        res = []
        l1,l2 = [],[]
        for num in nums:
            if num % 2 == 0:
                l2.append(num)
            else:
                l1.append(num)
        res.extend(l1)
        res.extend(l2)
        return res
            

 

 

  

posted @ 2022-07-26 17:11  Liang-ml  阅读(20)  评论(0)    收藏  举报