剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
- 题号:力扣 剑指 Offer 21
- 知识点:双指针
- 目标完成度:48/150
- 总结
题干:
常规做法:
- 1.遍历数组,把奇数元素放在
nums1
里面,把偶数元素放在nums2
里面 - 2.返回
nums1+nums2
# 常规做法
class Solution:
def exchange(self, nums: List[int]) -> List[int]:
nums1 = []
nums2 = []
for num in nums:
if num%2:
nums1.append(num)
else:
nums2.append(num)
return nums1+nums2
双指针解法:
- 1.定义头指针
left
和尾指针right
- 2.如果头指针指向的元素是奇数,则右移
- 3.如果头指针指向的元素是偶数,则把该元素交换到尾指针所指的位置,然后尾指针左移
# 双指针做法
class Solution:
def exchange(self, nums: List[int]) -> List[int]:
left = 0
right = len(nums) - 1
while left<right:
if nums[left]%2:
left += 1
else:
nums[left], nums[right] = nums[right], nums[left]
right -= 1
return nums