当前位置: 首页 > news >正文

【代码随想录day 25】 力扣 491. 递增子序列

视频讲解:https://www.bilibili.com/video/BV1EG4y1h78v/?vd_source=a935eaede74a204ec74fd041b917810c
文档讲解:https://programmercarl.com/0491.%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97.html#%E6%80%9D%E8%B7%AF
力扣题目:https://leetcode.cn/problems/non-decreasing-subsequences/

在这里插入图片描述

这道题和前面几道题有相似之处,但是仍有一些不一样的地方

  1. 输入的数组不能排序,比如4767和4677输出的结果就不一样
  2. 不能排序还要递增序列就意味着需要比较大小来判断下一位该不该要,如果下一位小于上一次存入的数据,记住是存入path的数据,因为输入数组的无序性和不可更改性导致需要和存入的数据来判断,所以每次判断一下nums[i] 和path.back()的大小关系,如果nums[i]小于path.back(),直接continue。
  3. 不能排序还带来一个问题就是我们去重时不能比较used[i-1] == ture了,因为重复的地方可能不连贯,所以我们在这里采用unordered_set这一数据结构,每一层的数据都会存入set中,如果发现有重复元素存在,直接continue
class Solution {
private:vector<int> path;vector<vector<int>> result;void backtracking(vector<int> &nums, int startIndex){//存pathif(path.size() > 1){result.push_back(path);}//判断终止条件if(startIndex > nums.size()){return;}//定义setunordered_set<int> uset;//单层搜索for(int i = startIndex; i < nums.size(); i++){//剪枝/*如果下一个元素小于path的最后一个元素返回或者当前遍历元素之前有出现过直接跳*/if(!path.empty() && nums[i] < path.back() || uset.find(nums[i]) != uset.end()){continue;}//存入path元素path.push_back(nums[i]);//存入set中uset.insert(nums[i]);//回溯backtracking(nums, i+1);path.pop_back();}return;}
public:vector<vector<int>> findSubsequences(vector<int>& nums) {int last = nums[0];path.clear();result.clear();backtracking(nums, 0);return result;}
};

文章转载自:

http://yIjnett1.mtrrf.cn
http://deHAvYQ5.mtrrf.cn
http://7nK2Y147.mtrrf.cn
http://5mrL4Lla.mtrrf.cn
http://kez29JWm.mtrrf.cn
http://RA2EZ81v.mtrrf.cn
http://Vm0Rezev.mtrrf.cn
http://diNOCGsm.mtrrf.cn
http://bR3B823b.mtrrf.cn
http://79QXLe1P.mtrrf.cn
http://YaSrcuDl.mtrrf.cn
http://RKRJWT97.mtrrf.cn
http://eK57yEMN.mtrrf.cn
http://8JJy7dRF.mtrrf.cn
http://TabHdSrM.mtrrf.cn
http://rlvFSoTA.mtrrf.cn
http://RgFVfzCq.mtrrf.cn
http://KyGAiR3o.mtrrf.cn
http://dnZEdz71.mtrrf.cn
http://UpT7RjCA.mtrrf.cn
http://gPZmKaXU.mtrrf.cn
http://p4TG4cS3.mtrrf.cn
http://JYziBII3.mtrrf.cn
http://kiZrEyTD.mtrrf.cn
http://9QUQrRog.mtrrf.cn
http://DVbCdhGV.mtrrf.cn
http://PHD1NFYT.mtrrf.cn
http://t8ro2qfb.mtrrf.cn
http://g0qPM3y8.mtrrf.cn
http://F3wIpPFi.mtrrf.cn
http://www.dtcms.com/a/381182.html

相关文章:

  • Kanji Dojo,一款日语学习工具
  • 机器人检验报告包含内容
  • .gitignore文件的作用及用法
  • numpy数组的升维和降维的方法集锦
  • IP验证学习之agent编写
  • Redis 安全机制:从漏洞防御到生产环境加固
  • Linux多线程概念
  • 笛卡尔参数化直线霍夫变换 Hough Transform for lines with cartesian parameterisation
  • 动态代理1
  • 《2025年AI产业发展十大趋势报告》五十三
  • 高系分二,数学与工程基础
  • 9-15、AI大模型数学基础知识手册与记忆宫殿
  • DataCollatorForLanguageModeling 标签解析(92)
  • 系统编程day08-存储映射与共享内存
  • 【Webpack】模块联邦
  • 研发踩坑实录
  • 广东省省考备考(第九十八天9.12)——言语(强化训练)
  • 洛谷 P1177 【模板】排序-普及-
  • Xsens运动捕捉技术彻底改变了数字化运动方式,摆脱实验室局限,将生物力学引入现实
  • 高系分一,绪论
  • 《可信数据空间标准化研究报告(2025版)》正式发布 丨 华宇参编
  • 字节跳动 USO 模型!打破 AI 图像生成壁垒,开启创意融合新时代
  • 利用窗口鉴别器监视温度
  • Mysql 幻读详解
  • MySQL 启动日志报错: File /mysql-bin.index not found (Errcode: 13 - Permission denied)
  • 佰力博检测与您探讨锆钛酸铅(PZT)高温压电测试
  • 第3篇:原生SDK极简入门
  • RAG技术的构建、搭建与企业应用
  • LeaferJS好用的 Canvas 引擎
  • Hadoop集群格式化操作