剑指 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

浙公网安备 33010602011771号