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)
相关推荐
南宫萧幕13 小时前
HEV 智能能量管理实战:从 MPC/PPO 理论解析到 Python-Simulink 联合仿真闭环全流程
开发语言·python·算法·matlab·控制
啦啦啦_999913 小时前
1. 一元/多元线性回归之 正规方程求解法
算法·回归·线性回归
众少成多积小致巨13 小时前
GNU Make 核心指南
android·c++
ECT-OS-JiuHuaShan13 小时前
整体论体系定理,全球开放,无法绕过
人工智能·科技·学习·算法·生活
贾斯汀玛尔斯13 小时前
每天学一个算法--BM25(Okapi BM25)
算法
谭欣辰13 小时前
详细讲解 C++ 状压 DP
开发语言·c++·动态规划
William_wL_14 小时前
【C++】stack和queue的使用和实现(附加deque的简单介绍)
开发语言·c++
山甫aa14 小时前
二叉树遍历----从零开始的数据结构
数据结构·c++·二叉树
grant-ADAS14 小时前
Overlay套刻测量
算法
猿长大人14 小时前
算法 | Douglas-Peucker 拯救“腰椎间盘突出的三角形”
算法