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)
相关推荐
样例过了就是过了2 分钟前
LeetCode热题100 颜色分类
c++·算法·leetcode
ZPC82104 分钟前
C++ 跨平台 UDP 收发测试程序
c++·算法·机器人
如君愿4 分钟前
考研复习 Day 34 | 习题--计算机网络 第六章(应用层 下)、数据结构 查找算法(下)
数据结构·计算机网络·考研·课后习题
Languorous.4 分钟前
数据结构初阶|二叉树入门,从零到一吃透基础
数据结构
hanbr7 分钟前
C++ 类型转换与异常处理全解析
开发语言·c++
ym_xixi9 分钟前
《类和对象》—— 构造函数与析构函数总结
前端·c++·算法
洛水水9 分钟前
【力扣100题】19. 排序链表 | 归并排序详解
算法·leetcode·链表
洛水水12 分钟前
【力扣100题】21. LRU 缓存
spring·leetcode·缓存
凯瑟琳.奥古斯特13 分钟前
丑数II C++三指针解法(力扣264)
数据结构·c++·算法·leetcode·职场和发展
YYYing.13 分钟前
【C++项目之高并发内存池 (四)】三层缓存的空间回收流程详解
c++·笔记·缓存·高并发·内存池