1.暴力法
单独创建两个列表,一个奇数列表,一个偶数列表。遍历整个数组,奇数偶数分开存放,最后再合并成一个列表。
class Solution:
def exchange(self, nums: List[int]) -> List[int]:
a = [] # 奇数
b = [] # 偶数
for i in range(len(nums)):
if nums[i]%2 == 0:
b.append(nums[i])
else:
a.append(nums[i])
a.extend(b)
return a
2.两个指针
探路指针 fast,交换指针 slow。
fast 如果指向偶数,不做反应,继续向前;fast 指向奇数时,交换两个指针的值。
class Solution:
def exchange(self, nums: List[int]) -> List[int]:
# 两个指针
slow = fast = 0
while fast < len(nums):
if nums[fast]&1: # 判定奇数的一种方式 和1相与为1
nums[fast],nums[slow] = nums[slow],nums[fast]
slow += 1
fast += 1
else:
fast += 1
return nums