-
STL风格版本,利用
reverse_iterator
简化边界判断,可处理重复元素。参见:生成全排列、下一个排列、第k
个排列的。 -
一维DP版本,时间复杂度
O(N^2)
,空间复杂度O(N)
-
基本思想是中序遍历二叉树,寻找逆序数对。
-
简单版本,空间复杂度
O(N)
-
Morris Traversal版本,空间复杂度
O(1)
参见Binary Tree Inorder Traversal(题目、Morris Traversal参考实现)
-
-
令集合大小为
N
,常见子集生成思路:- 遍历长度为
N
的Gray Codes(相关LeetCode题目、Wikipedia条目) - 遍历
0
至2^N - 1
的所有整数
以上两个思路都是每个整数对应于一个子集,其中第
i
个bit代表原集合中第i
个元素是否存在于目标子集。缺点在于N
较大时需要用到大整数运算。给出的参考实现不存在这个缺点,思路类似于Gray Code遍历(将j
由递增改为递减便成为Gray Code顺序)。 - 遍历长度为
-
-
Save irwenqiang/5782565 to your computer and use it in GitHub Desktop.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment