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

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]]=true
                dfs(nums,i+1)
                path = path[:len(path)-1]
            }
        }
    }
    dfs(nums,0)
    return res
}

3. 全排列

在这里插入图片描述

var (
    res [][]int
    path  []int
    st    []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] = true
            dfs(nums, cur + 1)
            st[i] = false
            path = path[:len(path)-1]
        }
    }
}

4. 全排列2

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

var(
    path []int
    res [][]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]=true
            dfs(nums,used,count+1)
            path = path[:len(path)-1]
            used[i]=false
        }
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智能时代下,人机交互和虚拟现实的机遇和挑战

智能时代下,人机交互和虚拟现实的机遇和挑战

vue打包时报错文件包过大

1.问题&#xff1a;npm run build 之后出现 2. 翻译之后意思就是某块过大 3. 解决办法&#xff1a;在vite.config.ts文件上添加 build: { chunkSizeWarningLimit: 1600, }, 4.最终打包

部署运行petalinux系统镜像

参考文档《编译 petalinux 系统镜像》编译获取 petalinux 系统镜像&#xff0c;编译生成的各种镜像文件如下&#xff1a; scilogyhunterubuntu1804:~/petalinux/workspace/project0/petalinux$ ls images/linux/ bl31.bin Image pxelinux.cfg rootfs.cpio.gz.u-boot …

1967python多媒体素材管理系统mysql数据库Django结构layUI布局计算机软件工程网页

一、源码特点 python Django多媒体素材管理系统是一套完善的web设计系统mysql数据库 &#xff0c;对理解python编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 开发环境pycharm mysql 5.0 到5.5 依赖包 Dj…

postman调用Grpc

环境&#xff1a; .net6.0 一、准备 安装nuget&#xff1a; Grpc.AspNetCore Google.Protobuf Grpc.Core.Api Grpc.Tools Grpc.AspNetCore.Server.Reflection Program.cs&#xff1a; public class Program{public static void Main(string[] args){var builder WebApplicat…

【Matlab函数分析】绘图函数:colormap查看并设置当前颜色图

&#x1f517; 运行环境&#xff1a;Matlab &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&#x1f91…

【PB案例学习笔记】-10 进度条使用

写在前面 这是PB案例学习笔记系列文章的第10篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gite…

2.5D的架构图相比3D有五大不可替代优势

2.5D架构图是一种介于2D和3D之间的图形表现形式&#xff0c;具有以下几个优势&#xff1a; 省时省力&#xff1a;相比于完全的3D架构图&#xff0c;2.5D架构图的制作相对简单&#xff0c;可以节省制作时间和人力成本。它只需要在平面上进行设计和绘制&#xff0c;不需要考虑3D…

域提权漏洞系列分析-Zerologon漏洞分析2

漏洞点⼆&#xff1a;错误设置CFB8模式 建⽴安全通道时&#xff0c;需要使⽤ComputeNetlogonCredential函数对客户端的Netlogon凭据输⼊client challenge和服 务器的Netlogon凭据输⼊server challenge (SC&#xff09;进⾏加密&#xff0c;ComputeNetlogonCredential函数⽀持使…

飞控如何和接收机接线?

飞控如何和接收机接线&#xff1f; 一般遥控都是按照顺序1对1接到飞控的INPUT端口。特别注意&#xff0c;华科尔的接收机&#xff0c;需要把1和2通道条换过来。 具体方法如下&#xff1a; 下面以MC6遥控接收机为例子&#xff1a; 用下面的图的接收机连接线来演示&#xff1a…

【C++】开源:RabbitMQ安装与配置使用(SimpleAmqpClient)

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次更新不迷路&#x1…

隆道专属商城 | 助力企业跨平台整合优势资源,解决采购寻源比价难题!

数字化采购时代&#xff0c;企业面临着日益激烈的市场竞争&#xff0c;如何优化资源配置、降低采购成本、提高采购效率成为企业追求的核心目标。当前&#xff0c;网上商城凭借其强大的供应链资源整合能力&#xff0c;为企业内部采购商城的搭建提供了独特的优势&#xff0c;已然…

常见SSL证书品牌关系图

常见SSL证书品牌关系图 在SSL证书市场上&#xff0c;有几个主要的品牌和他们之间的复杂关系。以下是一些主要的SSL证书提供商及其关系的简要概述&#xff1a; DigiCert&#xff1a; DigiCert 是最大的SSL证书颁发机构之一。它收购了Symantec的SSL和PKI业务&#xff0c;其中包括…

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

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

一个通俗易懂的例子,带你彻底明白 同步异步,阻塞非阻塞

阻塞I/O&#xff08;Blocking I/O&#xff09; 例子&#xff1a;你亲自去仓库取书。 过程&#xff1a; 你开车去仓库。在路上花时间开车到仓库。到了仓库后&#xff0c;排队等待拿到书。拿到书后&#xff0c;开车回家。 在整个过程中&#xff0c;你自己&#xff08;相当于程…

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

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

数据结构(四)双向链表

文章目录 一、概念二、无头双向链表示意图三、操作&#xff08;一&#xff09;定义结构体&#xff08;二&#xff09;创建链表1. 函数定义2. 注意点3. 代码实现 &#xff08;三&#xff09;插入1. 函数定义2. 注意点3. 代码实现 &#xff08;四&#xff09;删除1. 函数定义2. 注…

了不起的学习生产板OrangePiAiPro

一. OrangePi AiPro介绍和初始化配置 介绍 香橙派 orangePiAIpro这个板子其实早在一年前就已经有了大面积推广且应用于各种真实的智能场景中了&#xff0c;比如图像识别&#xff0c;大文本语义解析&#xff0c;语音识别等&#xff0c;今日我也终于下手啦。 因为本人本科是一个嵌…

【Ambari】Docker 安装Ambari 大数据单机版本

目录 一、前期准备 1.1 部署 docker 1.2 部署 docker-compose 1.3 版本说明 二 、镜像构建启动 2.1 系统镜像构建 2.2 安装包源镜像构建 2.3 kdc镜像构建 2.4 集群安装 2.5 容器导出为镜像 三、Ubuntu环境安装测试 3.1 环境准备 3.2 集群容器启动 一、前期准备 1.…

Android Activity 设计详解

文章目录 Android Activity 设计说明1. Activity 的生命周期2. Activity 的启动模式3. Activity 的通信4. Activity 的布局和视图管理5. Activity 的配置变化处理6. Activity 的保存和恢复状态7. Activity 的任务和返回栈 总结 Android Activity 设计说明 在 Android 中&#…