Leetcode:Next Permutation
2016-09-27 21:40
246 查看
此题不难,关键思路是找到某一个最大的i->nums[i],使得存在nums[k],k>i,大于nums[i]。然后将nums[i]的值与nums[k]交换后,并对nums[i+1:]排序。为了找到这个i,我们从右往左遍历,当第一个非递增的元素出现时,i就找到了。
但是为了编程方便,我们可以先将nums[i+1:]排序,这样就知道大于nums[i]的最小元素是多少了。
class Solution(object): def nextPermutation(self, nums): n = len(nums) if n<=1:return i =n-2 while i>=0 and nums[i] >= nums[i+1]:i-=1 if i>=0: sorts = sorted(nums[i:]) for x in sorts: if x>nums[i]:nums[i] = x;sorts.remove(x);break nums[i+1:] = sorts else: nums.sort()
相关文章推荐
- Android视频学习(二):数据存储与界面展示2
- java中定义“全局变量”的方法【菜鸟学java】
- 运维笔记2
- PhpStorm/IDEA/clion/pycharm 的破解与激活
- selenium 如何处理table
- Struts2 入门(二) 之 配置文件中的 Action 元素
- Mysql5.7究竟该如何安装
- swift中UIBarButtonItem颜色不正确显示解决办法
- 算法导论(12)
- Session 与 Cookie 的区别
- ORACLE常见错误代码的分析与解决
- linux中ctrl+z和ctrl+c的区别
- MFC属性对话框
- 2016年头条校招笔试题
- 菜鸟商城Android完整源码分享
- 百度地图API使用
- 共享资源的简单示例
- ORACLE安装后配置PLSQL
- tcp4次挥手
- TMS320C6678外部存储器DDR3硬件设计以及软件调试