LeetCode491 非递减子序列

前言

题目: 491. 非递减子序列
文档: 代码随想录------非递减子序列
编程语言: C++
解题状态: 好难...

思路

注意不能对原数组进行排序。

代码

cpp 复制代码
class Solution {
private:
    vector<vector<int>> res;
    vector<int> path;
    void backtracking(vector<int>& nums, int startIndex) {
        if (path.size() > 1) {
            res.push_back(path);
        }

        unordered_set<int> uset;

        for (int i = startIndex; i < nums.size(); i++) {
            if ((!path.empty() && nums[i] < path.back()) || uset.find(nums[i]) != uset.end()) {
                continue;
            }
            uset.insert(nums[i]);
            path.push_back(nums[i]);
            backtracking(nums, i + 1);
            path.pop_back();
        }
    }
public:
    vector<vector<int>> findSubsequences(vector<int>& nums) {
        res.clear();
        path.clear();
        backtracking(nums, 0);
        return res;
    }
};
  • 时间复杂度: O ( n ∗ 2 n ) O(n*2^n) O(n∗2n)
  • 空间复杂度: O ( n ) O(n) O(n)
相关推荐
tobias.b2 分钟前
408真题解析-2009-10-数据结构-排序
数据结构·算法·排序算法·408考研·408真题·真题解析
Zachary_zlc6 分钟前
有向无环图检测算法和关键路径算法
算法
你撅嘴真丑8 分钟前
素数回文数的个数 与 求分数序列和
算法
好奇龙猫10 分钟前
【大学院-筆記試験練習:线性代数和数据结构(2)】
数据结构·线性代数·决策树
Wuliwuliii15 分钟前
贡献延迟计算DP
数据结构·c++·算法·动态规划·dp
D_FW17 分钟前
数据结构第一章:绪论
数据结构·考研
苦藤新鸡18 分钟前
2.字母异位词分组
c语言·c++·力扣·哈希算法
ysn1111119 分钟前
简单多边形三角剖分---耳切法(含源码)
算法
e疗AI产品之路21 分钟前
一文介绍Philips DXL心电图算法
算法·pan-tompkins·心电分析
YGGP27 分钟前
【Golang】LeetCode 21. 合并两个有序链表
leetcode·链表·golang