day29|leetcode|C++|491. 非递减子序列|46. 全排列|47. 全排列 II
Leetcode 491. 非递减子序列
链接:491. 非递减子序列
thought:
- 设 stack 中最后一个值的位置为 last。如果 stack 为空,则 last = -1。
设当前正在处理的位置为 pos。 - 如果在 nums 的子区间 [last+1, pos) 中,存在和 nums[pos] 相同的值,则当前 nums[pos] 必须丢弃,不然会产生重复的子序列。

完整C++代码如下:
class Solution {
public:vector<vector<int>> findSubsequences(vector<int>& nums) {vector<vector<int>> res;vector<int> path;backtracking(res, nums, path, 0);return res;}private:void backtracking(vector<vector<int>>& res, vector<int>& nums, vector<int>& path, int start) {if (path.size() >= 2) // 如果当前递增子序列长度大于等于2,则将其加入结果集res.push_back(path);unordered_set<int> seen; // 用一个集合来记录当前层已经使用过的数字,避免重复//注意为当前层for (int i = start; i < nums.size(); ++i) {if ((!path.empty() && nums[i] < path.back()) || seen.count(nums[i])) // 如果当前数字小于上一个数字(不符合递增)或者已经使用过,则跳过continue;seen.insert(nums[i]); // 将当前数字加入集合path.push_back(nums[i]); // 将当前数字加入递增序列backtracking(res, nums, path, i + 1); // 递归搜索下一个位置path.pop_back(); // 回溯,将当前数字从递增序列中删除}}
};
Leetcode 46. 全排列
链接:46. 全排列
thought:
设置bool数组记录当前位置数是否已经使用过,若使用过直接跳过
完整C++代码如下:
class Solution {
public:vector<vector<int>> permute(vector<int>& nums) {vector<int>path;vector<vector<int>>res;vector<bool>used(nums.size(),false);backtracking(nums,path,res,used);return res;}void backtracking(vector<int>& nums,vector<int>&path,vector<vector<int>>&res,vector<bool>&used){if(path.size()==nums.size()){res.push_back(path);return;}for(int i=0;i<nums.size();i++){if(used[i])continue;used[i]=true;path.push_back(nums[i]);backtracking(nums,path,res,used);//递归path.pop_back();//回溯used[i]=false;//回溯}}
};
Leetcode 47. 全排列 II
链接:47. 全排列 II
class Solution {
private:vector<vector<int>> result;vector<int> path;void backtracking (vector<int>& nums, vector<bool>& used) {// 此时说明找到了一组if (path.size() == nums.size()) {result.push_back(path);return;}for (int i = 0; i < nums.size(); i++) {// used[i - 1] == true,说明同一树枝nums[i - 1]使用过// used[i - 1] == false,说明同一树层nums[i - 1]使用过// 如果同一树层nums[i - 1]使用过则直接跳过if (i > 0 && nums[i] == nums[i - 1] && used[i - 1] == false) {continue;}if (used[i] == false) {used[i] = true;path.push_back(nums[i]);backtracking(nums, used);path.pop_back();used[i] = false;}}}
public:vector<vector<int>> permuteUnique(vector<int>& nums) {result.clear();path.clear();sort(nums.begin(), nums.end()); // 排序vector<bool> used(nums.size(), false);backtracking(nums, used);return result;}
};相关文章:
day29|leetcode|C++|491. 非递减子序列|46. 全排列|47. 全排列 II
Leetcode 491. 非递减子序列 链接:491. 非递减子序列 thought: 设 stack 中最后一个值的位置为 last。如果 stack 为空,则 last -1。 设当前正在处理的位置为 pos。如果在 nums 的子区间 [last1, pos) 中,存在和 nums[pos] 相同的值&…...
[Java、Android面试]_12_java访问修饰符、抽象类和接口
文章目录 1. java访问修饰符2. 抽象类和接口2.1 抽象类2.2 接口2.3 抽象类和接口的区别 本人今年参加了很多面试,也有幸拿到了一些大厂的offer,整理了众多面试资料,后续还会分享众多面试资料。 整理成了面试系列,由于时间有限&…...
Linux:Prometheus的源码包安装及操作(2)
环境介绍 三台centos 7系统,运行内存都2G 1.prometheus监控服务器:192.168.6.1 主机名:pm 2.grafana展示服务器:192.168.6.2 主机名:gr 3.被监控服务器:192.168.6.3 …...
MongoDB聚合运算符:$integral
文章目录 语法使用举例 $integral聚合运算符只能用在$setWindowField阶段,返回曲线下面积的近似值,该曲线是使用梯形规则计算的,其中每组相邻文档使用以下公式形成一个梯形: $setWindowFields阶段中用于积分间隔的sortBy字段值$i…...
手撕算法-买卖股票的最佳时机 II(买卖多次)
描述 分析 使用动态规划。dp[i][0] 代表 第i天没有股票的最大利润dp[i][1] 代表 第i天持有股票的最大利润 状态转移方程为:dp[i][0] max(dp[i-1][0], dp[i-1][1] prices[i]); // 前一天没有股票,和前一天有股票今天卖掉的最大值dp[i][1] max(dp[i-1…...
技术创新与产业升级
在政府工作报告中,新兴技术如云计算、大数据、人工智能等被多次提及,这反映了政府高度重视新一代信息技术在推动经济社会发展中的重要作用。对于计算机行业而言,抓住这些新兴技术的发展机遇,推动技术创新和产业升级,将是未来发展的关键所在。 云计算作为一种新兴的计算模式,正…...
透视未来工厂:山海鲸可视化打造数字孪生新篇章
在信息化浪潮的推动下,数字孪生工厂项目正成为工业制造领域的新宠。作为一名山海鲸可视化的资深用户,我深感其强大的数据可视化能力和数字孪生技术在工厂管理中的应用价值,同时我们公司之前也和山海鲸可视化合作制作了一个智慧工厂项目&#…...
三.寄存器(内存访问)
1.内存中字的存储 2.并不是所有cpu都支持将数据段送入段寄存器,所以有时候用个别的寄存器先把数据段存储起来,再把该寄存器mov到段寄存器。 3.字的传送 4.栈 5.栈机制 举例说明 6.栈顶超界问题 push超界 pop超界 7.栈段...
Day31 贪心算法
Day31 贪心算法 455.分发饼干 我的思路: 小孩数组g指针一直前移,只有饼干数组s满足条件时,才前移,并且更新num 解答: class Solution {public int findContentChildren(int[] g, int[] s) {Arrays.sort(g);Arrays.…...
【WEEK4】 【DAY5】AJAX - Part Two【English Version】
2024.3.22 Friday Following the previous article 【WEEK4】 【DAY4】AJAX - Part One【English Version】 Contents 8.4. Ajax Asynchronous Data Loading8.4.1. Create User.java8.4.2. Add lombok and jackson support in pom.xml8.4.3. Change Tomcat Settings8.4.4. Mo…...
力扣100热题[哈希]:最长连续序列
原题:128. 最长连续序列 题解: 官方题解:. - 力扣(LeetCode)题解,最长连续序列 :哈希表 官方解题思路是先去重,然后判断模板长度的数值是否存在,存在就刷新,…...
python笔记基础--文件和存储数据(7)
目录 1.从文件中读取数据 2.写入文件 3.存储数据 3.1使用json.dump()和json.load() 3.2保存和读取用户生成的数据 3.3重构 1.从文件中读取数据 读取整个文件 with open(data.txt) as file_object: contents file_object.read()print(contents)print(contents.rstrip…...
Vue黑马笔记(最新)
VUE vue是一个用于构建用户界面的渐进式框架 创建一个VUE实例 核心步骤: 准备容器引包(官网)-开发版本/生产版本创建一个vue实例 new vue()指定配置项->渲染数据 el指定挂载点(选择器),指定管理的是哪个容器。dat…...
安全工具介绍 SCNR/Arachni
关于SCNR 原来叫Arachni 是开源的,现在是SCNR,商用工具了 可试用一个月 Arachni Web Application Security Scanner Framework 看名字就知道了,针对web app 的安全工具,DASTIAST吧 安装 安装之前先 sudo apt-get update sudo…...
赋能数据收集:从机票网站提取特价优惠的JavaScript技巧
背景介绍 在这个信息时代,数据的收集和分析对于旅游行业至关重要。在竞争激烈的市场中,实时获取最新的机票特价信息能够为旅行者和旅游企业带来巨大的优势。 随着机票价格的频繁波动,以及航空公司和旅行网站不断推出的限时特价优惠ÿ…...
【大模型】在VS Code(Visual Studio Code)上安装中文汉化版插件
文章目录 一、下载安装二、配置显示语言(一)调出即将输入命令的搜索模式(二)在大于号后面输入:Configure Display Language(三)重启 三、总结 【运行系统】win 11 【本文解决的问题】 1、英文不…...
自定义WordPress顶部的菜单的方法
要自定义WordPress顶部的菜单,你需要使用WordPress的菜单系统。首先,你需要创建自定义菜单,然后将其设置为顶部导航菜单。 以下是创建自定义菜单并设置其为顶部导航菜单的步骤: 登录到WordPress管理界面。转到“外观”>“菜单…...
独孤思维:流量暴涨,却惨遭违规
最近独孤操作虚拟资料短视频,有个很深的感悟。 每天发10条短视频,积累到20天左右,播放量和粉丝数开始暴涨。 虽然很多牛比的比我数据好,但是对于刚做短视频的独孤来说,我已经满足了。 但是又发了10来天,…...
【python 装饰器 - 重试】做一个简易重试装饰器,如果函数执行错误则会自动重新执行,可设置重试次数,对爬虫比较友好
文章日期:2024.03.19 使用工具:Python 类型:装饰器 文章全程已做去敏处理!!! 【需要做的可联系我】 AES解密处理(直接解密即可)(crypto-js.js 标准算法)&…...
Linux线程补充之——同步
一、Linux线程同步 同步是相对于竞争的概念; 同步就是在保证安全的前提下啊,按照一定的顺序访问临界资源; 所有的资源一定是先访问的临界资源,申请失败然后才进行排队的;互斥锁保证的是来访问的进程只允许…...
基于catia的牛肉嫩度检测仿真机械装置设计【论文+CAD图纸+CATIA三维+开题报告+任务书+外文翻译+文献综述+答
在肉类加工领域,牛肉嫩度是衡量品质的核心指标,直接影响消费者体验与市场价值。传统检测依赖人工切割或化学分析,存在效率低、破坏样本、结果主观性强等问题。基于CATIA平台的牛肉嫩度检测仿真机械装置设计,通过数字化建模与结构优…...
GModPatchTool:一站式Garry‘s Mod游戏问题解决方案与优化工具
GModPatchTool:一站式Garrys Mod游戏问题解决方案与优化工具 【免费下载链接】GModPatchTool 🇬🩹🛠 Patches for Garrys Mod. Updates/Improves CEF and Fixes common launch/performance issues (esp. on Linux/Proton/macOS). …...
手把手教你用Verilog实现一个带权重的轮询仲裁器(附Testbench与仿真波形)
手把手教你用Verilog实现带权重的轮询仲裁器 在数字电路设计中,仲裁器(Arbiter)是一个常见但至关重要的模块。想象一下,当多个主设备(比如CPU、DMA控制器等)需要访问同一个从设备(比如内存)时,仲…...
不用重复编译!共享ModelSim仿真库的终极技巧(Vivado 2018+版本通用)
共享ModelSim仿真库的高效复用策略(Vivado 2018通用指南) 当团队协作开发FPGA项目或频繁切换不同工程时,每次重新编译仿真库不仅耗时,还会占用大量存储空间。本文将揭示如何通过巧妙配置modelsim.ini文件实现仿真库的跨工程共享&a…...
PINN实战:如何用PyTorch自定义神经网络结构求解偏微分方程?
PINN实战:PyTorch自定义神经网络架构设计指南 在科学计算领域,物理信息神经网络(PINN)正逐渐成为求解偏微分方程(PDE)的新范式。与传统的数值方法不同,PINN将物理方程直接编码到神经网络中,通过自动微分技术实现端到端的求解。本文…...
SEO接单平台怎么选
SEO接单平台怎么选?详细指南解析 在当今数字化时代,SEO接单平台已经成为许多企业和自由职业者获取客户资源的重要途径。市场上充斥着各种SEO接单平台,如何选择一个合适的平台对于提升工作效率和业务发展至关重要。本文将详细介绍如何选择SEO…...
VutronMusic:重新定义跨平台音乐体验的全能播放器
VutronMusic:重新定义跨平台音乐体验的全能播放器 【免费下载链接】VutronMusic 高颜值的第三方网易云播放器;支持流媒体音乐,如navidrome、jellyfin、emby;支持本地音乐播放、离线歌单、逐字歌词、桌面歌词、Touch Bar歌词、Mac状…...
如何利用Gumbo-parser提升自动化测试效率:终极指南 [特殊字符]
如何利用Gumbo-parser提升自动化测试效率:终极指南 🚀 【免费下载链接】gumbo-parser An HTML5 parsing library in pure C99 项目地址: https://gitcode.com/gh_mirrors/gu/gumbo-parser Gumbo-parser是一个纯C99语言编写的HTML5解析库ÿ…...
企业级翻译系统落地:TranslateGemma助力国际化团队代码协作
企业级翻译系统落地:TranslateGemma助力国际化团队代码协作 1. 引言:全球化开发的语言挑战 在跨国企业技术团队中,代码协作常常面临语言障碍:核心框架文档是英文,而部分团队成员更习惯使用中文;开源项目注…...
如何高效加速GitHub下载:Fast-GitHub插件的完整指南
如何高效加速GitHub下载:Fast-GitHub插件的完整指南 【免费下载链接】Fast-GitHub 国内Github下载很慢,用上了这个插件后,下载速度嗖嗖嗖的~! 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 你是否经常因为Git…...
