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