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

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. 安全性与…

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

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

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

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

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

二叉树的基本概念 树是一种非线性的数据结构&#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;获取最新资源…

Shell脚本学习笔记(更新中...)

一、什么是shell shell的作用是&#xff1a; 解释执行用户输入的命令程序等。 用户输入一条命令&#xff0c;shell就解释一条。 键盘输入命令&#xff0c;LInux给与响应的方式&#xff0c;称之为交互式。 shell是一块包裹着系统核心的壳&#xff0c;处于操作系统的最外层&a…

Java从坚持到精通-SpringBoot项目-多来米云客(持续更新中)

1.项目介绍 该项目模仿动力云客制作&#xff0c;是一款商业的集营销销售为一体的客户关系管理系统&#xff0c;其采用信息化、数字化方式来进行营销销售及客户管理。 云客指的是海量客户&#xff0c;通过技术方式实现的这一套系统&#xff0c;可用于自动化分析销售、市场营销…

饮料添加剂新型褪色光照试验仪器太阳光模拟器

太阳光模拟器的定义和功能 太阳光模拟器是一种高科技设备&#xff0c;它可以模拟太阳光的光谱、光强和光照条件&#xff0c;用于实验室环境中对太阳能电池、光电器件以及其他需要太阳光条件的设备和材料进行评估。太阳光模拟器的主要功能包括模拟太阳光的光谱分布、辐照度、光…

阿里云获取nginx头部

k8s 配置 可以修改kube-system/nginx-configuration configmap的方式&#xff0c; compute-full-forwarded-for: “true” forwarded-for-header: “X-Forwarded-For” use-forwarded-headers: “true” https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-g…

ubuntu 22.04 appearance设置没有dock选项

1、问题描述 解决办法可以直接跳到后面见2 下图是我同学电脑的appearance界面选项&#xff0c;她有Dock的界面显示。 下面是我的界面&#xff0c; 没有Dock&#xff1a; 然后各种app的界面都在最底下&#xff0c;而且每次只能点击左上角的activities才能显示。 但是如果不打开某…

使用 Django 与 Redis 实现缓存优化

文章目录 什么是Redis&#xff1f;为什么选择Django与Redis&#xff1f;如何在Django中使用Redis&#xff1f;总结与拓展 在Web开发中&#xff0c;性能优化是一个至关重要的方面。而使用缓存是提高Web应用性能的常见方法之一。在这篇文章中&#xff0c;我们将探讨如何结合Djang…