【代码随想录——回溯算法——三周目】

1. 子集2

在这里插入图片描述这题需要先进行排序,和候选人那题类似。防止出现重复的子集。

func subsetsWithDup(nums []int) [][]int {path := make([]int, 0)res := make([][]int, 0)sort.Ints(nums)var dfs func(nums []int, start int)dfs = func(nums []int, start int) {res = append(res, append([]int(nil), path...)) //使用append创建path的副本for i := start; i < len(nums); i++ {if i != start && nums[i] == nums[i-1] {continue}path = append(path, nums[i])dfs(nums, i+1)path = path[:len(path)-1]}}dfs(nums, 0)return res
}

2. 递增子序列

在这里插入图片描述

func findSubsequences(nums []int) [][]int {res := make([][]int,0)path := make([]int,0)var dfs func(nums []int,start int)dfs = func(nums []int,start int){if len(path)>=2{res = append(res,append([]int(nil), path...))}used := make(map[int]bool,len(path))for i:=start;i<len(nums);i++{if used[nums[i]]{//去重continue}if len(path)==0 || nums[i]>=path[len(path)-1]{path = append(path,nums[i])used[nums[i]]=truedfs(nums,i+1)path = path[:len(path)-1]}}}dfs(nums,0)return res
}

3. 全排列

在这里插入图片描述

var (res [][]intpath  []intst    []bool   // state的缩写
)
func permute(nums []int) [][]int {res, path = make([][]int, 0), make([]int, 0, len(nums))st = make([]bool, len(nums))dfs(nums, 0)return res
}func dfs(nums []int, cur int) {if cur == len(nums) {tmp := make([]int, len(path))copy(tmp, path)res = append(res, tmp)}for i := 0; i < len(nums); i++ {if !st[i] {path = append(path, nums[i])st[i] = truedfs(nums, cur + 1)st[i] = falsepath = path[:len(path)-1]}}
}

4. 全排列2

在这里插入图片描述
需要注意:如何去重。先对数组进行排序,对于相同的字母,如果前面没选,则后面的页不能选。

var(path []intres [][]int
)
func permuteUnique(nums []int) [][]int {path = make([]int,0)res = make([][]int,0)used := make([]bool,len(nums))sort.Ints(nums)dfs(nums,used,0)return res
}func dfs(nums []int,used []bool,count int){if count==len(nums){res=append(res,append([]int(nil),path...))}for i:=0;i<len(nums);i++{if i!=0 && nums[i]==nums[i-1] && used[i-1]==false{continue}if used[i]==false{path = append(path,nums[i])used[i]=truedfs(nums,used,count+1)path = path[:len(path)-1]used[i]=false}}
}

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

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

相关文章

保留两位小数不四舍五入,10000.55变成10000.54的坑

正解 function moneyFormat(num){ let money num "";//隐式转换为字符串和toString()效果一样//没有小数补齐这个0if(money.indexOf(".")"-1"){moneymoney".00";}else{//有小数截取前二位小数moneymoney.substring(0,money.inde…

多线程基本常识

多线程的状态 在Java中&#xff0c;一个线程的生命周期有以下几种状态&#xff1a; 新建&#xff08;New&#xff09;&#xff1a;当线程对象被创建时&#xff0c;线程处于新建状态。此时线程对象存在&#xff0c;但还没有调用start()方法启动线程。 运行&#xff08;Runnable…

逆向基础:软件手动脱壳技术入门

这里整合了一下之前自己学习软件手工脱壳的一些笔记和脱文&#xff0c;希望能给新学软件逆向和脱壳的童鞋们一点帮助。 1 一些概念 1.1 加壳 加壳的全称应该是可执行程序资源压缩&#xff0c;是保护文件的常用手段。加壳过的程序可以直接运行&#xff0c;但是不能查看源代码…

基于多源数据的微服务系统失败测试用例诊断

简介 本文介绍由南开大学、华为云及清华大学共同合作的论文:基于多源数据的微服务系统失败测试用例诊断。该论文已被FSE 2024&#xff08;The ACM International Conference on the Foundations of Software Engineering&#xff09; 会议录用&#xff0c;论文标题为: Fault D…

【MySQL】库的操作+表的操作

库的操作表的操作 1.库的操作1.1创建数据库1.2删除数据库1.3查找数据库1.4修改数据库1.5数据库备份和恢复1.6查看连接情况 2.库的操作2.1创建表2.2查看表结构2.3修改表2.4删除表 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; …

[数据集][目标检测]红外车辆检测数据集VOC+YOLO格式13979张类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;13979 标注数量(xml文件个数)&#xff1a;13979 标注数量(txt文件个数)&#xff1a;13979 标…

网络流量探针与流量分析系统:全面指南

目录 什么是网络流量探针&#xff1f; 流量分析系统的功能与重要性 流量分析系统的主要功能 流量分析系统的重要性 AnaTraf 网络流量分析仪 如何选择合适的网络流量探针与流量分析系统&#xff1f; 1. 性能与扩展性 2. 易用性与部署 3. 数据可视化与报告 4. 安全性与…

模拟退火算法教程(个人总结)

模拟退火算法&#xff08;Simulated Annealing, SA&#xff09;是一种基于概率的全局优化算法&#xff0c;广泛应用于解决复杂的优化问题。该算法借鉴了物理学中金属退火过程的原理&#xff0c;旨在通过模拟这一过程来寻找全局最优解。本文将详细介绍模拟退火算法的背景、基本原…

Java如何将tif格式图片转为jpg格式图片

在Java中&#xff0c;将TIFF&#xff08;.tif&#xff09;格式的图片转换为JPEG&#xff08;.jpg&#xff09;格式的图片&#xff0c;通常需要使用图像处理库&#xff0c;如Apache Commons Imaging&#xff08;之前称为Sanselan&#xff09;或Java Advanced Imaging (JAI)。但是…

LayaAir3.2来了:性能大幅提升、一键发布安装包、支持WebGPU、3D导航寻路、升级为真正的全平台引擎...

LayaAir3的每一个分支版本都是一次较大的提升&#xff0c;在3.1彻底完善了引擎生态结构之后&#xff0c;本次的3.2会重点完善全平台发布相关的种种能力&#xff0c;例如&#xff0c;除原有的安卓与iOS系统外&#xff0c;还支持Windows系统、Linux系统、鸿蒙Next系统&#xff0c…

暑期社会实践即将强势来袭,投稿三下乡文章最强攻略

以热爱充实自我 以笃行丰盈青春 这个盛夏“乡”约 纷纷迈出了社会实践的有力步伐 在展开社会实践的同时 也不要忘记投稿宣传的重要性哦 快快收藏住这份投稿攻略 助力团队展现更多精彩的实践故事! No.1 感悟思想伟力&#xff0c;守好“红色根脉” No.2 循迹“八八战略…

STM32 定时器问题

stm32通用定时器中断问题 STM32 定时器有时一开启就进中断的问题 ///

ModuleNotFoundError: No module named ‘pdfkit‘

ModuleNotFoundError: No module named pdfkit 这个错误表明你的 Python 环境中没有安装名为 pdfkit 的模块。pdfkit 是一个将 HTML 转换为 PDF 的工具&#xff0c;它依赖于 wkhtmltopdf 这个命令行工具。 为了解决这个问题&#xff0c;你需要安装 pdfkit 模块以及 wkhtmltopd…

2023山东ICPC省赛Problem E. Math Problem

2023 山东 I C P C 省赛 P r o b l e m E . M a t h P r o b l e m \Huge{2023山东ICPC省赛Problem E. Math Problem} 2023山东ICPC省赛ProblemE.MathProblem 文章目录 题意思路标程 比赛链接&#xff1a;Dashboard - The 13th Shandong ICPC Provincial Collegiate Programmin…

二叉树顺序结构的实现(堆)

二叉树的基本概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 有一个特殊的结点&#xff0c;称为根结…

How to record real IP of user on nginx?

应用(Docker)使用WAF接入internet&#xff0c;nginx log 查不到用户的真实IP地址&#xff0c;于是修改nginx 设置&#xff0c;以下都是在linux下操作&#xff1a; 由于没有WAF权限&#xff0c;所以在 docker上启动了两个container&#xff0c;一个模拟WAF(r-proxy)&#xff0c…

软考 系统架构设计师系列知识点之SOME/IP与DDS(2)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之SOME/IP与DDS&#xff08;1&#xff09; 本文内容参考&#xff1a; 车载以太网 - SOME/IP简介_someip-CSDN博客 https://zhuanlan.zhihu.com/p/369422441 什么是SOME/IP?_someip-CSDN博客 SOME/IP 详解系列&#…

基础—SQL—DML(数据操作语言)插入数据

一、介绍 分类全称说明DMLData Manipulation Language数据操作语言。用来对数据库表中的数据进行增删改(插入、删除、修改) 则增、删、改是三个操作也就对应着三个关键字&#xff0c;分别是&#xff1a; 添加数据&#xff1a;&#xff08; INSERT &#xff09;修改数据&#…

521源码-免费音乐源码-最新流媒体在线音乐系统网站源码| 英文版源码| 音乐社区 | 多语言 | 开心版

免费音乐源码 一键自动安装&#xff1a;安装用翻译看提示操作即可 本源码下载地址&#xff1a;最新流媒体在线音乐系统网站源码| 英文版源码| 音乐社区 | 多语言 | 开心版 - 521源码 更多网站源码学习教程&#xff0c;请点击&#x1f449;-521源码-&#x1f448;获取最新资源…

conda install卡在solving environment不动

参考官方issue&#xff1a;https://github.com/conda/conda/issues/11919 之前用conda安装pytorch的时候发现用conda install一直会卡在solving environment不动&#xff0c;后来被迫使用pip install才避免了这个问题。 例如&#xff1a; Solving environment: failed with ini…