代码随想录打卡—day29—【回溯】— 回溯基础练习 4.19+4.20

server/2024/10/11 9:19:18/

1 491. 非递减子序列

一开始的思路是根据上一篇的3 90. 子集 II,加上set开始魔改。

即不要nums[i]和相邻元素val相等且在同一层就continue,但是本题不能sort所以没有相邻元素val,所以我加了set设置为本层之前遍历过的元素。代码如下,但是还是过不了这样的样例。

[4,6,7,1,7,7]

[1,2,3,4,5,6,7,8,9,10,1,1,1,1,1]

代码:

class Solution {
public:vector<vector<int>> ans;vector<int> path;bool vis[300];void dfs(int start_idx,vector<int>& nums){if(path.size() >= 2)ans.push_back(path);if(start_idx == nums.size())return;unordered_set<int> set_now_val;for(int i = start_idx; i < nums.size();i++)  // 遍历一层{if(path.empty() || nums[i] >= path[path.size()-1]){// 同一层之间去重if(i != 0 && !path.empty() && !set_now_val.empty() && set_now_val.find(nums[i]) != set_now_val.end() && vis[nums[i] + 100] == 0)continue;vis[nums[i] + 100] = 1;path.push_back(nums[i]);set_now_val.insert(nums[i]);dfs(i+1,nums);vis[nums[i] + 100] = 0;path.pop_back();}}}vector<vector<int>> findSubsequences(vector<int>& nums) {dfs(0,nums);return ans;}
};// [4,6,7,1,7]


http://www.ppmy.cn/server/16183.html

相关文章

【Linux 进程间通信】管道

文章目录 1.System V 标准介绍2.进程间通信的方式&#xff1f;3.管道&#xff08;匿名管道&#xff09; 1.System V 标准介绍 ①&#x1f34e; System V 实际上就是一个标准&#xff08;“ 行业领头羊制定出来的专利 " &#xff09; 2.进程间通信的方式&#xff1f; …

深入理解安卓ARouter:集成与应用

摘要 在Android开发中&#xff0c;页面间的导航和参数传递是一个重要的组成部分。ARouter&#xff08;Android Router&#xff09;是一个轻量级、模块化的路由框架&#xff0c;旨在简化页面间的跳转和参数传递。本文将详细介绍安卓ARouter的概述、集成步骤、优劣分析及应用场景…

Python数据权限的管理通常涉及到几个关键组件:身份验证,、授权和访问控制。这通常是通过使用数据库、ORM(对象关系映射)框架、API框架和中间件

在Python中&#xff0c;数据权限的管理通常涉及到几个关键组件&#xff1a;身份验证&#xff0c;、授权和访问控制。这通常是通过使用数据库、ORM&#xff08;对象关系映射&#xff09;框架、API框架和中间件等技术来实现的。以下是一些建议的步骤和工具&#xff0c;用于在Pyth…

链表

一.链表的概念及结构 链表是一种物理存储结构上非连续存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的引用链接次序实现的。 value存数据&#xff0c;节点存下一个的地址&#xff0c;通过节点找下一个数据&#xff0c;每个节点都是一个对象 注意&#xff1a; 链式结构…

Three.js入门学习笔记

学习资料&#xff1a; 【Three.js】Three.js快速上手教程_three.module.js-CSDN博客 2024年了&#xff0c;是该学学Three.js了_three.js 2024-CSDN博客 一、three.js简介 three.js是JavaScript编写的WebGL第三方库。 three.js&#xff0c;webGL&#xff0c;openGL三者的关…

Vivado-IP-DDS and Testbench Learning

DDS内部结构 实现流程 首先新建一个工程&#xff0c;创建bd文件&#xff0c;添加DDS Compiler核&#xff0c;此处不多赘述 Block Design 在观测输出的信号时&#xff0c;需要将最高位符号位的信号取反&#xff0c;这样才能输出正弦波&#xff0c;否则输出的波形如下图所示 将t…

Java虚拟机(jvm)常见问题总结

1.电脑怎样认识我们编写的Java代码 首先先了解电脑是二进制的系统&#xff0c;他只认识 01010101比如我们经常要编写 HelloWord.java 电脑是怎么认识运行的HelloWord.java是我们程序员编写的&#xff0c;我们人可以认识&#xff0c;但是电脑不认识 Java文件编译的过程 1. 程…

JavaScript基础学习(5.操作符)

⭐ 作者简介&#xff1a;码上言 ⭐ 代表教程&#xff1a;Spring Boot vue-element 开发个人博客项目实战教程 ⭐专栏内容&#xff1a;个人博客系统 ⭐我的文档网站&#xff1a;http://xyhwh-nav.cn/ ⭐微信公众号&#xff1a;码上言 文章目录 操作符1. 一元操作符1.1. 递…