31. Next Permutation 解法思路与 python 实现

LeetCode传送门

    题目要求实现所给 list 的下一个字典序,也就是说,给出比当前数字大的最小数字,以 [1,2,3] 为例,比 123 大的数字的最小值为 132 。

    例子 [1,4,5,5,7,6,4,2]  结果:[1,4,5,6,2,4,5,7]

    想要实现,我们首先需要倒数找到第一个数字满足 nums[i] < nums[i+1],这样的话 nums[0] 到 nums[i-1]是不需要改变的,没想明白的可以拿笔画一画,其实想明白这里后面就简单了。

    这里 i = 3。

    然后,在 i 之后的位置中找到比 nums[i] 大的最小数字,将其与 nums[i] 交换,确定了 i 位置。

    这里 应该将 nums[3] 和 nums [5] 交换,list 变为 [1,4,5,6,7,5,4,2]

    最后,把 i 位置之后的数字正序排序

    这里 将 7,5,4,2 变为 2,4,5,7

    得到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值