zoukankan      html  css  js  c++  java
  • Leetcode练习(Python):数组类:第31题:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 必须原地修改,只允许使用额外常数空间。

    题目:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。  如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。  必须原地修改,只允许使用额外常数空间。 

    思路:两个指针,一个向前,一个向后

    程序:

    class Solution:
        def nextPermutation(self, nums: List[int]) -> None:
            """
            Do not return anything, modify nums in-place instead.
            """
            length = len(nums)
            if length < 2:
                return
            index1 = length - 2
            while index1 >= 0:
                for index2 in range(index1 + 1, length, 1):
                    if nums[index1] < nums[index2]:
                        temp_num = nums[index1]
                        nums[index1] = nums[index2]
                        nums[index2] = temp_num
                        nums[index1 + 1 :] = sorted(nums[index1 + 1 :])
                        return
                nums[index1 :] = sorted(nums[index1 :])
                index1 -= 1
  • 相关阅读:
    自定义maven插件
    vim编辑器的基本用法
    sql查询两条记录的时间差
    spring boot继承web和mybatis时,调用接口删除记录出现的空指针以及解决办法
    Thymeleaf模板引擎的初步使用
    Spring Boot中的AutoConfiguation核心注解
    Spring Boot中的自定义start pom
    Spring中,使用Java配置的方式进行依赖注入
    设计模式之——flyweight模式
    ConfuserEx .net dll加壳失败原因
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12725466.html
Copyright © 2011-2022 走看看