题目
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
思路
双指针。一个指向头,一个指向尾。遍历的时候,交换,使得前面为奇数,后面为偶数。时间复杂度O(n)。
代码
class Solution:def exchange(self, nums: List[int]) -> List[int]:ptr = 0tail = len(nums) - 1while ptr < tail:# 向前移动,至到指向偶数while nums[ptr] & 1 == 1 and ptr < tail:ptr += 1# 向后移动,至到指向奇数while nums[tail] & 1 != 1 and ptr < tail:tail -= 1# 交换当前指针的两个数if tail > ptr:nums[ptr], nums[tail] = nums[tail], nums[ptr]return nums
