代码随想录算法训练营第二十五天|leetcode46、47、491题

一、leetcode第491题

using namespace std;class Solution {
private:vector<vector<int>> result;vector<int> path;// 回溯函数用于找到递增子序列void backtracking(vector<int>& nums, int startIndex) {// 如果当前子序列长度大于1,则将其加入结果集if (path.size() > 1) {result.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) {result.clear();path.clear();backtracking(nums, 0);return result;}
};

二、leetcode第46题

class Solution {
public: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++) {// 如果当前元素已经被使用过,则跳过if (used[i]) continue;// 标记当前元素为已使用used[i] = true;// 将当前元素加入排列路径中path.push_back(nums[i]);// 递归调用回溯函数,继续生成排列backtracking(nums, used);// 回溯,撤销当前元素的使用状态,并移出排列路径中的最后一个元素used[i] = false;path.pop_back();}}// 主函数,用于生成给定整数数组的所有排列vector<vector<int>> permute(vector<int>& nums) {result.clear(); // 清空结果集path.clear(); // 清空当前排列路径vector<bool> used(nums.size(), false); // 标记数组中每个元素的使用状态,默认为未使用backtracking(nums, used); // 调用回溯函数生成排列return result; // 返回所有排列的结果}
};

三、leetcode第47题

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++) {// 如果同一树层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);// 回溯,撤销当前元素的使用状态,并移出排列路径中的最后一个元素used[i] = false;path.pop_back();}}}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; // 返回所有排列的结果}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/758695.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机设计大赛 题目: 基于深度学习的疲劳驾驶检测 深度学习

文章目录 0 前言1 课题背景2 实现目标3 当前市面上疲劳驾驶检测的方法4 相关数据集5 基于头部姿态的驾驶疲劳检测5.1 如何确定疲劳状态5.2 算法步骤5.3 打瞌睡判断 6 基于CNN与SVM的疲劳检测方法6.1 网络结构6.2 疲劳图像分类训练6.3 训练结果 7 最后 0 前言 &#x1f525; 优…

【C++】constexpr和const

在C中&#xff0c;constexpr和const都用于声明常量&#xff0c;但它们之间有一些重要的区别&#xff1a; const&#xff1a; const用于定义常量&#xff0c;表示其数值不可被修改。 变量被声明为const后&#xff0c;在程序执行过程中其数值不可改变。 可以用于修饰变量、指针…

ASP.NET Core新特性

1. ASP.NET Core2.1 ASP.NET Core 2.1于2018年5月30日发布。是ASP.NET Core框架的一个重要版本&#xff0c;带来了许多新功能和改进。以下是ASP.NET Core 2.1中一些主要的特性&#xff1a; SignalR&#xff1a;引入了 SignalR&#xff0c;这是一个实时通信库&#xff0c;使得构…

Orange3数据预处理(公式组件)

公式 为您的数据集添加新特征。 输入 数据&#xff1a;输入数据集 输出 数据&#xff1a;带有额外特征的数据集 公式组件允许通过使用用户定义的表达式来计算新列。结果列可以是分类的、数值的或文本的。 对于数值变量&#xff0c;只需提供名称和表达式。 1.构建变量列表…

学点儿Java_Day7_在实体类当中IDEA无法进行单元测试(@Test没有启动按钮)

在敲代码体会继承和访问修饰符的时候忽然遇到了单元测试不管用的情况&#xff0c;表现为没有启动按钮   经过一番折腾&#xff0c;发现我的测试是在具有构造函数的实体类Person当中进行的&#xff0c;当我把所有的构造函数删除后&#xff0c;启动按钮又出来了&#xff0c;加…

水电能源智能化监控系统

水电能源智能化监控系统是利用现代信息技术&#xff0c;对水电站的运行状态、设备性能、环境参数等进行实时监测和管理的一种智能化系统。随着我国水电能源事业的快速发展&#xff0c;水电能源智能化监控系统在水电能源行业中的应用越来越广泛&#xff0c;为我国水电能源事业的…

@click 和 v-on:click 的区别

前言&#xff1a; click 和 v-on:click 的含义 与 两者之间的区别&#xff1a; 知识小结&#xff1a; click 和 v-on:click 的区别&#xff1a; click 和 v-on:click 是用于处理用户点击事件的指令&#xff0c;但它们分别用于不同的框架或库中。 click&#xff1a; click 是 V…

关于继承是怎么样的?那当然是很好理解之

本文描述了关于继承的大部分知识&#xff0c;但是并不全&#xff0c;每篇博客之间的知识都有互串&#xff0c;所以需要把几篇文章合起来看&#xff0c;学会融会贯通&#xff01; 温馨提示&#xff1a;使用PC端观看&#xff0c;效果更佳&#xff01; 目录 1.继承是什么 2.什…

【位运算】【 数学】【 哈希映射】2857. 统计距离为 k 的点对

本文涉及知识点 位运算 数学 哈希映射 LeetCode 2857. 统计距离为 k 的点对 给你一个 二维 整数数组 coordinates 和一个整数 k &#xff0c;其中 coordinates[i] [xi, yi] 是第 i 个点在二维平面里的坐标。 我们定义两个点 (x1, y1) 和 (x2, y2) 的 距离 为 (x1 XOR x2) …

STM32最小核心板使用HAL库实现UART接口通讯(中断方式)

正式环境里需要串联电阻&#xff0c;或设计过滤电路。核心板是STM32F103C8T6 这里使用了UART3的接口&#xff0c;具体使用MX创建项目就不放了&#xff0c;百度下都有 /*USART3 GPIO ConfigurationPB10 ------> USART3_TXPB11 ------> USART3_RX */ 因为是串口…

开发技术-FeignClient 对单个接口设置超时时间

1. 背景 FeignClient 调用某个接口&#xff0c;3s 没有结果就需要停止&#xff0c;处理后续业务。 2. 方法 FeignClient 自定义 name 属性 FeignClient(name "aaa" , url "xxx") public interface TestApi {ResponseBodyPOSTMapping(value "xx…

以码会友|PR大征集!2024共绘 MoonBit 新篇章!

首先&#xff0c;感谢 MoonBit 社区所有的贡献者在过去一个月积极的参与和贡献&#xff01;为了感谢与鼓励更多的MoonBit Contributor&#xff0c;我们以码会友&#xff0c;邀请你加入“一起成为MoonBit Contributor&#xff01;” 的活动&#xff01; 活动内容也可以点击文章…

【第十三章】改进神经网络学习方式-其他正则化技术

L1正则化 除了L2正则化之外&#xff0c;还有许多正则化技术。事实上&#xff0c;已经开发出了如此多的技术&#xff0c;以至于我不可能总结它们。在本节中&#xff0c;我简要介绍了三种减少过拟合的其他方法&#xff1a;L1正则化、dropout和人为增加训练集大小。我们不会像之前…

在ComfyUI中,IP-Adapter的一大堆模型应该怎么放?

&#x1f381;背景介绍 IP-Adapter有一大堆的模型&#xff0c;那么这个模型在ComfyUI中&#xff0c;这些模型到底应该怎么放呢&#xff1f;这篇文章简单介绍一下。 首先&#xff0c;大家需要到huggingface上找到对应的模型&#xff0c;把所有的模型先下载下来。 huggingface…

技术工作报告-基于linux的信息转二维码图像方法的研究

一、摘要&#xff1a; 本报告旨在介绍基于Linux的信息转二维码图像方法的研究。通过对二维码技术的背景和相关研究的调研&#xff0c;我们提出了一种基于Linux平台的信息转二维码图像方法&#xff0c;并进行了实验验证。本方法可以在Linux系统上实现高效、准确的信息转二维码图…

数据分析的具体流程

1.导入 表格导入数据时要注意数据的格式问题非表格导入 可以先将文档放入word中 将换行符&#xff08;^p&#xff09;替换为|||&#xff0c;选择特殊格式中的段落标记 进行全部替换 以每一列最后的数据/平&#xff0c;作为换行的标志 将所整理的信息导入excel,对数据进行分列 选…

大数据 - Spark系列《十四》- spark集群部署模式

Spark系列文章&#xff1a; 大数据 - Spark系列《一》- 从Hadoop到Spark&#xff1a;大数据计算引擎的演进-CSDN博客 大数据 - Spark系列《二》- 关于Spark在Idea中的一些常用配置-CSDN博客 大数据 - Spark系列《三》- 加载各种数据源创建RDD-CSDN博客 大数据 - Spark系列《…

leetcode ——匹配子序列的单词数

题目&#xff1a; 给定字符串 s 和字符串数组 words, 返回 words[i] 中是s的子序列的单词个数 。 字符串的 子序列 是从原始字符串中生成的新字符串&#xff0c;可以从中删去一些字符(可以是none)&#xff0c;而不改变其余字符的相对顺序。 例如&#xff0c; “ace” 是 “…

Git版本管理工具

前言&#xff1a; 本文记录学习使用 Git 版本管理工具的学习笔记&#xff0c;通过阅读参考链接中的博文和实际操作&#xff0c;快速的上手使用 Git 工具。 本文参考了引用链接博文里的内容。 引用: Git使用教程-配置管理 git reset详解-CSDN博客 3、Git使用不完全指南&am…

二维数组应用案例

大家好&#xff1a; 衷心希望各位点赞。 您的问题请留在评论区&#xff0c;我会及时回答。 考试成绩统计 案例描述&#xff1a;有三名同学&#xff08;张三、李四、王五&#xff09;&#xff0c;在一次考试中成绩分别如下表&#xff0c;请分别输出三名同学的总成绩。 成绩表 语…