代码随想录算法训练营第23期day28|491.递增子序列 46.全排列 47.全排列 II
目录
一、(leetcode 491)递增子序列
二、(leetcode 46)全排列
三、(leetcode 47)全排列 II
一、(leetcode 491)递增子序列
力扣题目链接
状态:去重方法错误。
这道题和之前全排列的区别就在于不是对同一层的重复元素进行去重,而是去除同一父节点下的重复使用元素,为了达到这个目的,需要使用哈希来判断是否重复,注意到数组中值的大小是-100到100之间,因此可以直接利用哈希数组进行判断
class Solution {
public:vector<vector<int>> res;vector<int> path;void backtracking(vector<int>& nums, int startIndex){if(path.size() >= 2){res.emplace_back(path);}int len = nums.size();int used[201] = {0};for(int i = startIndex; i < len; ++i){if((!path.empty() && path.back() > nums[i]) || used[nums[i] + 100] == 1){continue;}used[nums[i] + 100] = 1;path.emplace_back(nums[i]);backtracking(nums, i+1);path.pop_back();}}vector<vector<int>> findSubsequences(vector<int>& nums) {res.clear();path.clear();backtracking(nums, 0);return res;}
};
二、(leetcode 46)全排列
力扣题目链接
状态:查看思路后AC。
注意全排列和组合(子集)的最大区别在于,全排列的回溯展开每次都是从0开始而不是startIndex,因此需要一个used数组来对已经使用过的节点进行记录,值得注意的是在pop之后,used数组也要进行更新
class Solution {
public:vector<vector<int>> res;vector<int> path;void backtracking(vector<int>& nums, vector<bool>& used){if(path.size() == nums.size()){res.emplace_back(path);return;}for(int i = 0; i < nums.size(); ++i){if(used[i]) continue;used[i] = true;path.emplace_back(nums[i]);backtracking(nums, used);path.pop_back();used[i] = false;}}vector<vector<int>> permute(vector<int>& nums) {res.clear();path.clear();vector<bool> used(nums.size(), false);backtracking(nums, used);return res;}
};
三、(leetcode 47)全排列 II
力扣题目链接
状态:查看思路后也没AC。
这里的去重逻辑和组合中的树层去重逻辑类似,注意细节。
class Solution {
public:vector<vector<int>> res;vector<int> path;void backtracking(vector<int>& nums, vector<bool>& used){if(path.size() == nums.size()){res.emplace_back(path);return;}for(int i = 0; i < nums.size(); ++i){if(i > 0 && nums[i-1] == nums[i] && used[i-1] == true) continue;if(used[i] == false){used[i] = true;path.emplace_back(nums[i]);backtracking(nums, used);
相关文章:
代码随想录算法训练营第23期day28|491.递增子序列 46.全排列 47.全排列 II
目录 一、(leetcode 491)递增子序列 二、(leetcode 46)全排列 三、(leetcode 47)全排列 II 一、(leetcode 491)递增子序列 力扣题目链接 状态:去重方法错误。 这道题…...
ubuntu磁盘扩容
1、参考链接: https://blog.csdn.net/qq_43265072/article/details/112312223 2、尝试过程中小心翼翼,生怕待会系统崩掉,要重装。。。 不过呢有撤销和提交按钮就非常贴心,如果稍有不慎就一路回撤就好啦 说一下怎么移动空间&…...
C/S架构学习之使用select实现TCP小型并发服务器
select实现TCP小型并发服务器的流程:一、创建套接字(socket函数):通信域选择IPV4网络协议、套接字类型选择流式; int sockfd socket(AF_INET,SOCK_STREAM,0); //通信域选择IPV4、套接字类型选择流式二、填充服务器的网…...
公司注册类型分类标准是怎样的
公司法上的分支机构、分公司、子公司是什么 - 公司法 (一)以公司股东的责任范围为标准分类 以公司股东的责任范围为标准,亦即以公司股东是否对公司债务承担责任为标准,可将公司分为无限责任公司、两合公司、股份两合公司、股份有限公司和有限责任公司。…...
5.MidBook项目经验之MongoDB,Nacos,网关
1.医院查询接口 //系统1(signsignMD5加密后) ----> 系统2(数据库signMD5加密 相对比),好处在于网络之间传输不会得到直接得到sign 2.上传和删除科室信息 //map转jsonString,然后再转为对象//保存需要查数据库是否存在,存在修改,不存在添加//接口的包引入不对导致调用引包错误…...
XMLHttpRequest对象的Get请求和Post请求的用法
XMLHttpRequest对象的Get请求和Post请求的用法 Get请求提交数据 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>发送ajax get请求</title> </head> <body> <script type"…...
Tomcat动静分离
访问静态页面和访问动态页面分开,实现动态页面和静态页面的负载均衡 一、七层动静分离 3台虚拟机 1、nginx1既是代理也是静态 nginx1:20.0.0.11 2、请求动态页面:Tomcat1和Tomcat2 Tomcat1:20.0.0.31 Tomcat2:20…...
一些ECharts配置
基于vue3,EChart5.4.3版本 Line <script setup lang"ts"> import {onBeforeUnmount, onMounted, ref, watch} from "vue" import {useEcharts, type ECOption} from "/composables" import * as echarts from "echarts/c…...
C调用Objective-C的类和方法
C调用Objective-C的类和方法 最近有一个C提供回调接口调用Objective-c接口来传递数据的需求,研究了很久,最终通过bing的AI对话查到了需要的内容,这里记录一下,算是给基于C的IOS开发开了一个头。 在Objective-C中,你可…...
驱动开发day1
头文件 #ifndef __HEAD_H__ #define __HEAD_H__ #define PHY_LED1_MODER 0X50006000 #define PHY_LED1_ODR 0X50006014#define PHY_LED2_MODER 0x50007000 #define PHY_LED2_ODR 0x50007014#define PHY_LED3_MODER 0x50006000 #define PHY_LED3_ODR 0x50006014#define P…...
C++ linux vscode编译
.cpp .h文件关系与编译命令 单一cpp文件编译多个.cpp文件编译.h头文件和.cpp源文件在同一目录下编译.h头文件和.cpp源文件在不同一目录下编译 单一cpp文件编译 //test.cpp为测试源文件, a.out为输出可执行文件 g test.cpp -o a.out多个.cpp文件编译 目录1结构如下…...
卷积神经网络CNN学习笔记
目录 1.全连接层存在的问题2.卷积运算3.填充(padding)3.1填充(padding)的意义 4.步幅(stride)5.三维数据的卷积运算6.结合方块思考7.批处理8.conv2d代码参考文章 1.全连接层存在的问题 在全连接层中,相邻层的神经元全部连接在一起,输出的数量可以任意决…...
Java的Socket Timeout和tcp的存活探测包是不是一个东西
背景 你有没有好奇过我们在java中通过Socket.setSoTimeout()设置timeout参数时,他怎么做到在timeout时间到了之后连接就报错的?有没有产生过误解,这个参数就是设置keepalive探测包的检测间隔? 问题真相 其实Socket.setSoTimeou…...
基于跳蛛优化的BP神经网络(分类应用) - 附代码
基于跳蛛优化的BP神经网络(分类应用) - 附代码 文章目录 基于跳蛛优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.跳蛛优化BP神经网络3.1 BP神经网络参数设置3.2 跳蛛算法应用 4.测试结果:5.M…...
基于鹈鹕优化的BP神经网络(分类应用) - 附代码
基于鹈鹕优化的BP神经网络(分类应用) - 附代码 文章目录 基于鹈鹕优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.鹈鹕优化BP神经网络3.1 BP神经网络参数设置3.2 鹈鹕算法应用 4.测试结果:5.M…...
『ARM』和『x86』处理器架构解析指南
前言 如果问大家是否知道 CPU,我相信不会得到否定的答案,但是如果继续问大家是否了解 ARM 和 X86 架构,他们的区别又是什么,相信可能部分人就会哑口无言了 目前随着深度学习、高性能计算、NLP、AIGC、GLM、AGI 的技术迭代&#…...
Android 13.0 系统设置 app详情页默认关闭流量数据的开关
1.概述 在13.0的系统产品开发中,移动流量消耗也是关于产品优化的一个方面,由于产品需求需要对app详情页的流量进行管控默认关闭流量开关,不让流量无故流失,所以需要从流量开关分析问题流量打开流程,然后关闭 2.系统设置 app详情页默认关闭流量数据的开关的核心类 package…...
054协同过滤算法的电影推荐系统
大家好✌!我是CZ淡陌。一名专注以理论为基础实战为主的技术博主,将再这里为大家分享优质的实战项目,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路…...
分享一个基于JavaWeb的私人牙科诊所预约挂号就诊系统的设计与实现项目源码调试 lw 开题 ppt
💕💕作者:计算机源码社 💕💕个人简介:本人七年开发经验,擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等,大家有这一块的问题可以一起交流! 💕&…...
从零开始的C++(十一)
vector的模拟实现: 1.构造函数: vector(){}vector(int n, const T& value T()){ reserve(n);for (int i 0; i < n; i){push_back(value);}}template<class InputIterator>vector(InputIterator first, InputIterator last){ auto it …...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...
GraphQL 实战篇:Apollo Client 配置与缓存
GraphQL 实战篇:Apollo Client 配置与缓存 上一篇:GraphQL 入门篇:基础查询语法 依旧和上一篇的笔记一样,主实操,没啥过多的细节讲解,代码具体在: https://github.com/GoldenaArcher/graphql…...
拟合问题处理
在机器学习中,核心任务通常围绕模型训练和性能提升展开,但你提到的 “优化训练数据解决过拟合” 和 “提升泛化性能解决欠拟合” 需要结合更准确的概念进行梳理。以下是对机器学习核心任务的系统复习和修正: 一、机器学习的核心任务框架 机…...
【Pandas】pandas DataFrame dropna
Pandas2.2 DataFrame Missing data handling 方法描述DataFrame.fillna([value, method, axis, …])用于填充 DataFrame 中的缺失值(NaN)DataFrame.backfill(*[, axis, inplace, …])用于**使用后向填充(即“下一个有效观测值”)…...
信息系统分析与设计复习
2024试卷 单选题(20) 1、在一个聊天系统(类似ChatGPT)中,属于控制类的是()。 A. 话语者类 B.聊天文字输入界面类 C. 聊天主题辨别类 D. 聊天历史类 解析 B-C-E备选架构中分析类分为边界类、控制类和实体类。 边界…...
电脑定时关机工具推荐
软件介绍 本文介绍一款轻量级的电脑自动关机工具,无需安装,使用简单,可满足定时关机需求。 工具简介 这款关机助手是一款无需安装的小型软件,文件体积仅60KB,下载后可直接运行,无需复杂配置。 使用…...
