美文网首页
31.leetcode题目讲解(Python):下一个排列

31.leetcode题目讲解(Python):下一个排列

作者: 夏山闻汐 | 来源:发表于2018-10-29 15:51 被阅读30次

题目:


题目

这道题的主要思路是当遇到后面的数字大于前面的数字(假设索引为i)时,就反向查找次大的数字,然后交换两个数字,并将i之后的数字按照升序进行排列。

值得注意的是,这道题要求所有更改都需要直接对输入 nums 进行更改,不允许return返回值。参考代码如下:

class Solution:
    def nextPermutation(self, nums):
        """
        :type nums: List[int]
        :rtype: void Do not return anything, modify nums in-place instead.
        """
        numr = sorted(nums, reverse=True)

        # such arrangement is not possible
        if numr == nums:
            nums.reverse()

        elif len(nums) != 0 and numr != nums:
            j = len(nums) - 1
            while j > 0:
                i = j - 1
                if nums[j] > nums[i]:
                    # look backward for min num which greater than nums[i]
                    k = j
                    swap = j
                    while k < len(nums):
                        if nums[i] < nums[k]:
                            if nums[k] < nums[j]:
                                swap = k
                        k = k + 1
                    temp = nums[i]
                    nums[i] = nums[swap]
                    nums[swap] = temp
                    # sorted in ascending order
                    nums[i + 1:] = sorted(nums[i + 1:])
                    break
                else:
                    j = j - 1

源码地址:
https://github.com/jediL/LeetCodeByPython

其它题目:[leetcode题目答案讲解汇总(Python版 持续更新)]
(https://www.jianshu.com/p/60b5241ca28e)

ps:如果您有好的建议,欢迎交流 :-D,
也欢迎访问我的个人博客 苔原带 (www.tundrazone.com)

相关文章

  • 31.leetcode题目讲解(Python):下一个排列

    题目: 这道题的主要思路是当遇到后面的数字大于前面的数字(假设索引为i)时,就反向查找次大的数字,然后交换两个数字...

  • LeetCode 31. 下一个排列 | Python

    31. 下一个排列 题目 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如...

  • 31-下一个排列

    下一个排列 题目 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在...

  • LeetCode-31-下一个排列

    LeetCode-31-下一个排列 题目 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个...

  • 31.下一个数列

    题目实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更大的排...

  • 【LeetCode题解】31. 下一个排列

    题目 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排...

  • [LeetCode]31、下一个排列

    题目描述 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更...

  • 31. 下一个排列

    一、题目 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更...

  • 31.下一个排列

    题目描述 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大...

  • leetcode题目31. 下一个排列(java)

    题目描述 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大...

网友评论

      本文标题:31.leetcode题目讲解(Python):下一个排列

      本文链接:https://www.haomeiwen.com/subject/jdwbtqtx.html