调整数组顺序使奇数位于偶数前面(栈和队列)
时间: 2023-08-21 18:27:53 浏览: 126
调整数组顺序使奇数位于偶数前面.md
这道题可以使用双指针法,定义左指针left指向数组开头,右指针right指向数组末尾。然后不断向中间靠拢,如果左指针指向的数是偶数,右指针指向的数是奇数,就交换两个数的位置。直到左指针和右指针相遇为止。
具体实现可以参考以下代码:
```python
def reorder_odd_even(nums):
if not nums:
return nums
left, right = 0, len(nums) - 1
while left < right:
if nums[left] % 2 == 0 and nums[right] % 2 == 1:
nums[left], nums[right] = nums[right], nums[left]
left += 1
right -= 1
elif nums[left] % 2 == 1:
left += 1
elif nums[right] % 2 == 0:
right -= 1
return nums
```
这个算法的时间复杂度为O(n),空间复杂度为O(1)。
阅读全文