-
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