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 小时前
C++基础 — 函数总结
开发语言·c++
烬羽2 小时前
递归老写崩?一个"退回"公式,把回溯题变成填空题
javascript·深度学习·算法
闪电悠米2 小时前
力扣hot100-41.缺失的第一个正数-原地哈希详解
数据结构·算法·哈希算法
WL学习笔记3 小时前
堆(数据结构)
数据结构·
星空露珠3 小时前
28种颜色对应名称,
开发语言·数据库·算法·游戏·lua
我不是懒洋洋3 小时前
从零实现一个分布式监控:Prometheus的核心设计
c++
An_s3 小时前
c++对接pdfium(一)win系统篇
开发语言·c++
众少成多积小致巨4 小时前
C++ 规范参考(上)
c++
QXWZ_IA4 小时前
桥梁数字孪生怎么落地?
人工智能·科技·算法·智能硬件·政务
Kel4 小时前
输出层与反分词(Output Layer & Detokenization)
人工智能·算法·架构