LeetCode刷题(4)
来源:互联网 发布:韦德职业生涯总数据 编辑:程序博客网 时间:2024/06/05 22:39
permutation
字典序1,2,3—>1,3,2—>2,1,3—>2,3,1—>3,1,2—>3,2,1—>1,2,3
1.Next Permutation
寻找下一个序列的过程,首先找到第一个非降序的point,之后将该point与后续第一个大于该数的point对换,之后将后续数组逆序。
n = len(nums) - 1 m = n while m: if nums[m] > nums[m - 1]: break m -= 1 if not m: nums.sort() #index = nums[m - 1] else : index = nums[m - 1] l = n while l: if nums[l] > index: break l -= 1 nums[m - 1], nums[l] = nums[l], nums[m - 1] nums[m:n+1] = nums[m:n+1][::-1]
2.permute:
递归算法,在任意位插入新point
return nums and [node[:i] + [nums[0]] + node[i:] for node in self.permute(nums[1:]) for i in range(len(nums))] or [[]]
3.permute 消除重复
以重复数字的第一次出现为标记,不往后插
res = [[]] for p in nums: res_n = [] for node in res: for i in xrange(len(node)+1): res_n.append(node[:i]+[p]+node[i:]) if i < len(node) and node[i] == p : break res = res_n return res
阅读全文
0 0
- Leetcode刷题(4)
- LeetCode刷题(4)
- 【leetcode】leetcode 刷题 笔记 (不定期更新)
- Leetcode 刷题: 4Sum
- leetcode刷题(Python)
- LeetCode刷题(1)
- LeetCode刷题(2)
- LeetCode刷题(3)
- LeetCode刷题(废弃)
- LeetCode刷题(FizzBuzz)
- Leetcode刷题(1)
- Leetcode刷题(2)
- Leetcode刷题(3)
- Leetcode刷题(5)
- Leetcode刷题(6)
- Leetcode刷题(7)
- Leetcode刷题(13)
- Leetcode刷题(17)
- HTML+CSS学习笔记3
- 算法题:求最后一个单词长度
- java并发中的wait(),notify(),notifyAll()方法和Condition接口
- Chapter4 表达式
- STL-deque容器
- LeetCode刷题(4)
- struts2的基本用法
- js函数、作用域、闭包、执行上下文
- 多态
- Java300StudyNote(7)-Java各版本JavaSE、JavaEE、JavaME
- 学习日记-css3 @supports | @media | @keyframes | rem字体
- uefi模式下修复windows启动分区:使用bcdboot.exe工具
- 运行JFinal时jdk报错:A JNI error has occurred,please check your installation and try again
- 《啊哈算法》里快排要从右开始的原因