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)
相关推荐
音草19 分钟前
AVL 树详解:从概念到 C++ 实现
c++
凉茶钱29 分钟前
list:哨兵节点,const_iterator 和 const iterator的区别与迭代器失效
数据结构·c++·list
沫璃染墨39 分钟前
从零入门计算机网络系列(六):TCP套接字编程实战——从listen监听到客户端与服务器通信
linux·服务器·c++·tcp/ip·计算机网络·tcp
Jsundoku1 小时前
第六章 机器学习 -- 支持向量机
算法·机器学习·支持向量机
?abc!1 小时前
(数组)448. 找到所有数组中消失的数字
算法
淡海水1 小时前
05-03-源码-Boehm GC分配与碎片管理
开发语言·算法·unity·c#·游戏引擎·gc
努力实干1 小时前
C++ 面向对象与工程架构
开发语言·c++·架构
代钦塔拉1 小时前
【C++/Qt 进阶】设计模式系列(6):桥接模式——把“两个独立变化的维度“拆开
c++·qt·设计模式
青少儿编程课堂2 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C/C++考级:任意进制互转与大数多进制加法解析
c++·python·算法·bfs·信息学竞赛