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
  • 相关阅读:
    P3254 圆桌问题
    P4868 Preprefix sum
    2021sd省选游记
    P4145 上帝造题的七分钟2 / 花神游历各国
    P2801 教主的魔法
    P4147 玉蟾宫(悬线法)
    P1944 最长括号匹配
    CF1214D Treasure Island
    Loadrunner与kylinPET的能力对比测试--web动态请求
    Summer——从头开始写一个简易的Spring框架
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12725466.html
Copyright © 2011-2022 走看看