491. 非递减子序列
分析
path
数组记录当前构建中的子序列- 每当
path
长度大于等于2
,就加入答案集 - 每次从下标
u
开始向后枚举所有可能的数字:- 若当前数字
nums[i]
可以接在path
的末尾(即递增),就加入递归 - 用一个哈希集合
S
记录当前层用过的数字,避免同一层出现重复元素(防止结果中出现重复子序列)
- 若当前数字
时间复杂度
时间复杂度 O(2^n)
空间复杂度
空间复杂度 O(n)
C++代码
|
|
path
数组记录当前构建中的子序列path
长度大于等于 2
,就加入答案集u
开始向后枚举所有可能的数字:
nums[i]
可以接在 path
的末尾(即递增),就加入递归S
记录当前层用过的数字,避免同一层出现重复元素(防止结果中出现重复子序列)时间复杂度 O(2^n)
空间复杂度 O(n)
|
|