时间复杂度是O(n), 空间复杂度为O(n).
双指针法 分别设置头指针i和尾指针j头指针指向奇数时,i += 1, 指向偶数时不动,等待尾指针,尾指针指向偶数时,j -= 1。如果头指针指向偶数,尾指针指向奇数,则交换两者。nums[i], nums[j] = nums[j], nums[i]。同时 i += 1,j -= 1。当i >= j时退出循环 class Solution: def exchange(self, nums: List[int]) -> List[int]: i, j = 0, len(nums)-1 while i<j: if nums[i] % 2 == 0 and nums[j] % 2 == 1: nums[i], nums[j] = nums[j], nums[i] i += 1 j -= 1 if nums[i] % 2 == 1: i += 1 if nums[j] % 2 == 0: j -= 1 return nums时间复杂度是O(n),空间复杂度是O(1)