-
STL风格版本 https://gitcafe.com/liancheng/leetcode/blob/master/solutions/next-permutation/solution.hpp
利用
reverse_iterator
简化边界判断,可处理重复元素。参见:生成全排列、下一个排列、第k
个排列的。 -
一维DP版本 https://gitcafe.com/liancheng/leetcode/blob/master/solutions/unique-binary-search-trees/dp.hpp
时间复杂度
O(N^2)
,空间复杂度O(N)
-
基本思想是中序遍历二叉树,寻找逆序数对。
-
简单版本 https://gitcafe.com/liancheng/leetcode/blob/master/solutions/recover-binary-search-tree/naive.hpp 空间复杂度
O(N)
-
Morris Traversal版本 https://gitcafe.com/liancheng/leetcode/blob/master/solutions/recover-binary-search-tree/morris.hpp 空间复杂度
O(1)
参见Binary Tree Inorder Traversal(题目、Morris Traversal参考实现)
-
-
https://gitcafe.com/liancheng/leetcode/blob/master/solutions/subsets/solution.hpp
令集合大小为
N
,常见子集生成思路:- 遍历长度为
N
的Gray Codes(相关LeetCode题目、Wikipedia条目) - 遍历
0
至2^N - 1
的所有整数
以上两个思路都是每个整数对应于一个子集,其中第
i
个bit代表原集合中第i
个元素是否存在于目标子集。缺点在于N
较大时需要用到大整数运算。给出的参考实现不存在这个缺点,思路类似于Gray Code遍历(将j
由递增改为递减便成为Gray Code顺序)。 - 遍历长度为
Last active
December 18, 2015 11:59
-
-
Save liancheng/5780025 to your computer and use it in GitHub Desktop.
2013/06/15手写代码竞赛参考实现
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
写的很好,既有讲解又有代码