博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
31. Next Permutation (python)
阅读量:3735 次
发布时间:2019-05-22

本文共 1260 字,大约阅读时间需要 4 分钟。

Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.

If such arrangement is not possible, it must rearrange it as the lowest possible order (ie, sorted in ascending order).
The replacement must be in-pla
ce, do not allocate extra memory.
Here are some examples. Inputs are in the left-hand column and its corresponding outputs are in the right-hand column.
1,2,3 → 1,3,2
3,2,1 → 1,2,3
1,1,5 → 1,5,1
题意:下一个排列(字典的排序方法)
数学的排列组合问题,将排列中的数字重新排列成字典序中的下一个更大的排列。如果这样的重新排列是不可能的,它必须重新排列为可能的最低顺序(即升序排序)。重排必须在原地,不分配额外的内存。
eg:123-132-213-231-312-321(将123进行排列组合,保证下一个比前一个大,”下一个函数”需要输入排列组合,输出下一个)
思路:1)由于下一个数比上一个数大,因此需要从后往前扫描,找到递增的位置设为元素i,j(i小于j)
2)由于下一个数虽然大于上一个数,且最接近上一个数,因此找到元素i,在i元素后面找到最接近i且大于i的元素k。由于i后面的元素都是降序排列的,只需要从后往前扫描找到第一个比i大的元素即可
3)找到将i和k交换位置,然后将k后面的元素递增排序
4)找不到,则将全部元素递增排序
Runtime: 86 ms

class Solution(object):    def nextPermutation(self, nums):        if len(nums)<=1:            return         for i in range(len(nums)-2,-1,-1):            if nums[i]
nums[i]: nums[i],nums[k]=nums[k],nums[i] nums[i+1:]=sorted(nums[i+1:]) break break else: if i==0: nums.sort()

转载地址:http://vcfin.baihongyu.com/

你可能感兴趣的文章
Java高级篇之进程
查看>>
Java高级篇之集合框架
查看>>
类加载机制
查看>>
反射技术
查看>>
了解jdk1.8版本一些新的特性
查看>>
Java高级篇之网络通讯
查看>>
浅谈篇之线程池
查看>>
Lambda 表达式
查看>>
Java高级篇之Object 类
查看>>
字符串函数MySQL
查看>>
8个SQL讲解优化
查看>>
MySQL实战续(一)
查看>>
MySQL实战续(二)
查看>>
安装Elastic和kibana
查看>>
什么是搜索
查看>>
全文检索工具elasticsearch
查看>>
ES6之模块化
查看>>
Vue之条件渲染实战
查看>>
Vue之列表渲染
查看>>
Vue之计算属性实战
查看>>