剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
示例:
输入:nums = [1,2,3,4]
输出:[1,3,2,4]
注:[3,1,2,4] 也是正确的答案之一。
我的思路是从左到右搜,如果左边有奇数,就从末尾开始找一个偶数交换。
- 假如左边的是一个偶数,从右边末尾开始搜一个奇数
- 如果搜索完毕,会出现两种情况,一种是左右指针相遇,弹出循环。这个时候直接break。说明此索引后数组里面全是偶数。
- 如果是搜索到奇数弹出的,那么交换两者的位置,但是左指针的值需要加一,右指针的值减一。
- 如果从左开始搜的时候,左边的是奇数,那么左指针右移,判断下一个。
class Solution:
def exchange(self, nums: List[int]) -> List[int]:
left, right = 0,