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)
相关推荐
高山有多高16 小时前
详解文件操作
c语言·开发语言·数据库·c++·算法
乌萨奇也要立志学C++17 小时前
【洛谷】队列相关经典算法题详解:模板队列、机器翻译、海港
算法
狂奔的sherry17 小时前
单例模式(巨通俗易懂)普通单例,懒汉单例的实现和区别,依赖注入......
开发语言·c++·单例模式
YuTaoShao17 小时前
【LeetCode 热题 100】49. 字母异位词分组
算法·leetcode·哈希算法
EnigmaCoder17 小时前
【C++】引用的本质与高效应用
开发语言·c++
郭涤生18 小时前
arma::imat22
c++
aliedudu18 小时前
决策树概念与原理
算法·决策树·机器学习
歪歪10019 小时前
Qt Creator 打包应用程序时经常会遇到各种问题
开发语言·c++·qt·架构·编辑器
程序员Xu19 小时前
【LeetCode热题100道笔记】腐烂的橘子
笔记·算法·leetcode
阿维的博客日记19 小时前
LeetCode5最长回文子串
leetcode