Leetcode刷题Python剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
Posted Better Bench
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode刷题Python剑指 Offer 21. 调整数组顺序使奇数位于偶数前面相关的知识,希望对你有一定的参考价值。
1 题目
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。
示例:
输入:nums = [1,2,3,4]
输出:[1,3,2,4]
注:[3,1,2,4] 也是正确的答案之一。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2 解析
(1)方法一
使用python内置的双端队列,队头和队尾都可以插入
(2)方法二
使用双指针,左边插入一个,左指针往右移动1,右边插入一个,右指针往左移动1
3 python 实现
(1)方法一
class Solution:
def exchange(self, nums: List[int]) -> List[int]:
import collections
d = collections.deque()
for i in nums:
if i%2==0:
d.append(i)
else:
d.appendleft(i)
return list(d)
(2)方法二
class Solution:
def exchange(self, nums: List[int]) -> List[int]:
n = len(nums)
res,left,right = [0]*n,0,n-1
for i in nums:
if i%2==0:
res[right] = i
right-=1
else:
res[left] = i
left +=1
return res
以上是关于Leetcode刷题Python剑指 Offer 21. 调整数组顺序使奇数位于偶数前面的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode刷题Python剑指 Offer 30. 包含min函数的栈
Leetcode刷题Python剑指 Offer II 082. 含有重复元素集合的组合
Leetcode刷题Python剑指 Offer 32 - I. 从上到下打印二叉树
Leetcode刷题Python剑指 Offer 04. 二维数组中的查找