剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
题目描述:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
示例:
输入:nums = [1,2,3,4]
输出:[1,3,2,4]
注:[3,1,2,4] 也是正确的答案之一。
最初思路:
建立两个列表,分别存放奇偶数,最后再合并。(时间和内存占用都比较多)
# solo
class Solution:
def exchange(self, nums: List[int]) -> List[int]:
a = []
b = []
for i in range(len(nums)):
if nums[i] % 2 == 0:
a.append(nums[i])
else:
b.append(nums[i])
for i in range(len(a)):
b.append(a[i])
return b
题解:
# 1.只需要遍历一次即可。首端快慢指针。
class Solution:
def exchange(self, nums: List[int]) -> List[int]:
i= 0
for j in range(len(nums)):
if nums[j]%2 == 1:
nums[i],nums[j] = nums[j],nums[i]
i+=1
return nums