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. 二维数组中的查找

Leetcode刷题Python剑指 Offer 11. 旋转数组的最小数字

Leetcode刷题Python剑指 Offer 18. 删除链表的节点