代码随想录算法训练营|day28

第七章 回溯算法

  • 93.复原IP地址
  • 78.子集
  • 90.子集II
  • 代码随想录文章详解

93.复原IP地址

ip地址有效需要满足:遍历完s,将其分为4段,每段数字有效性:范围在[0,255],且不含前导零
为避免重复取值,需要startIndex作为下次递归的初始位置。当遍历结束startIndex == len(s),且ip段数为4 len(path) == 4加入结果,否则提前回溯。
如果当前字符串满足要求,递归调用下一层

func restoreIpAddresses(s string) []string {res := []string{}path := []string{}var help func(s string, startIndex int)help = func(s string, startIndex int) {if len(path) == 4 {if startIndex == len(s) {res = append(res, strings.Join(path, "."))}return}for i := startIndex; i < len(s); i++ {str := s[startIndex : i+1]if isValid(str) {path = append(path, str)help(s, i+1)path = path[:len(path)-1]} else {break}}}help(s, 0)return res
}func isValid(str string) bool {if len(str) != 1 && str[0] == '0' {return false}i, _ := strconv.Atoi(str)if i > 255 {return false}return true
}

78.子集

子集相当于找树的节点,只要遍历到一个节点就加入结果

func subsets(nums []int) [][]int {res := [][]int{}path := []int{}var help func(nums []int, startIndex int)help = func(nums []int, startIndex int) {tmp := make([]int,len(path))copy(tmp,path)res = append(res, tmp)for i := startIndex; i < len(nums); i++ {path = append(path, nums[i])help(nums, i+1)path = path[:len(path)-1]}}help(nums, 0)return res
}

90.子集II

相较于上题子集问题,数组有重复元素,要求结果集合不能重复,需要去重
先对数组进行排序,然后同层去重否则,相当于当前元素要走前一个元素已经走过的路
同层去重:used[i - 1] = false,说明是从前一个元素回溯回来的,若used[i - 1] = true说明是进入下一个递归取值

func subsetsWithDup(nums []int) [][]int {res := [][]int{}path := []int{}used := make([]bool, len(nums))sort.Ints(nums)var help func(nums []int, startIndex int)help = func(nums []int, startIndex int) {tmp := make([]int, len(path))copy(tmp, path)res = append(res, tmp)for i := startIndex; i < len(nums); i++ {if i > 0 && nums[i] == nums[i-1] && used[i-1] == false {continue}path = append(path, nums[i])used[i] = truehelp(nums, i+1)used[i] = falsepath = path[:len(path)-1]}}help(nums, 0)return res
}

代码随想录文章详解

93.复原IP地址
78.子集
90.子集II

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

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

相关文章

开源社区资源网站GitHub遭遇经济危机:GitHub员工警告当前模式不可持续,没有更多资金开源项目就有消亡的风险

在 State of Open Con 活动中&#xff0c;GitHub 的开源项目经理 Kara Sowles 警告称当前的开源资助方法“不可持续”。她指出&#xff0c;许多开源开发人员在没有报酬的情况下工作&#xff0c;这导致 58% 的开发人员考虑过停止参与开源项目&#xff0c;22% 的人已经退出。此外…

探讨CSDN等级制度:博客等级、原力等级、创作者等级

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;Vir2021GKBS &#x1f43c;本文由…

编辑器Zed

什么是Zed 官网&#xff1a;https://zed.dev/ Zed 是 Atom 编辑器原作者主导的新项目 —— 一款支持多人协作的代码编辑器&#xff0c;底层采用 Rust&#xff0c;且默认支持 Rust&#xff0c;还自带了 rust-analyzer&#xff0c;主打 “高性能”&#xff0c;颜值也十分在线&a…

GPT-3 训练自己的数据教程详解

安装依赖库&#xff1a; 确保你安装了必要的Python库&#xff0c;包括transformers、torch等。 pip install torch pip install transformers下载预训练模型&#xff1a; 从Hugging Face的模型库中下载GPT-2的预训练权重。 from transformers import GPT2Tokenizer, GPT2LMHe…

【MySQL】MySQL复合查询--多表查询/自连接/子查询

文章目录 1.基本查询回顾2.多表查询3.自连接4.子查询4.1单行子查询4.2多行子查询4.3多列子查询4.4在from子句中使用子查询4.5合并查询4.5.1 union4.5.2 union all 1.基本查询回顾 表的内容如下&#xff1a; mysql> select * from emp; ----------------------------------…

生成函数性质速查表

摘要: 生成函数的性质 【对数据分析、人工智能、金融科技、风控服务感兴趣的同学&#xff0c;欢迎关注我哈&#xff0c;阅读更多原创文章】 我的网站&#xff1a;潮汐朝夕的生活实验室 我的公众号&#xff1a;潮汐朝夕 我的知乎&#xff1a;潮汐朝夕 我的github&#xff1a;Fen…

前端开发 :(二)HTML基础

1. 介绍HTML 1.1 HTML的定义和作用 HTML&#xff08;HyperText Markup Language&#xff09;是一种标记语言&#xff0c;用于创建和设计网页的结构和内容。它通过使用标签来描述文档的结构&#xff0c;使得浏览器能够正确地解释和显示页面。 1.2 HTML的发展历史 HTML的发展…

StringBuilder类常用方法(Java)

StringBuilder类常用方法 StringBuilder 是 Java 中常用的字符串缓冲区类&#xff0c;适用于频繁修改字符串的场景。 1. append(): 将指定字符串、字符、布尔值或其他数据类型的表示追加到字符串缓冲区的末尾。 StringBuilder sb new StringBuilder("Hello"); sb.…

微信小程序(三十七)选项点击高亮效果

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.选择性渲染类 2.以数字为需渲染内容&#xff08;数量&#xff09; 源码&#xff1a; index.wxml <view class"Area"><!-- {{activeNumindex?Active:}}是选择性添加类名进行渲染 -->&l…

深兰科技“华佗”医用红外热像仪正式获批国家医疗器械二类证

近日&#xff0c;深兰科技自主研发生产的医用红外热像仪&#xff0c;经国家食药监局严格审查&#xff0c;顺利通过了国家药品监督局的医疗器械产品认证&#xff0c;拿到了国家二类医疗器械注册证。这标志着深兰科技“华佗”医用红外热像仪的产品性能和质量均已达到国家标准&…

nacos安装手册

1. 单机模式 1.1 准备安装介质 nacos-server-2.1.1.tar.gz1.2 环境准备 1台服务器安装JDK 1.8 1.3 解压 tar-zxvf nacos-server-2.1.1.tar.gz1.4 启动 进入解压的nacos目录&#xff0c;进入bin目录&#xff0c;运行&#xff1a; ./startup.sh -m standalone1.5 验证 na…

互联网加竞赛 基于深度学习的行人重识别(person reid)

文章目录 0 前言1 技术背景2 技术介绍3 重识别技术实现3.1 数据集3.2 Person REID3.2.1 算法原理3.2.2 算法流程图 4 实现效果5 部分代码6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的行人重识别 该项目较为新颖&#xff0c;适合…

已解决:tpm2_createpriimay: command not found

出现错误如下&#xff1a; ERROR: Could not change hierarchy for Owner. TPM Error:0x9a2 ERROR: Could not change hierarchy for Endorsement. TPM Error:0x9a2 ERROR: Could not change hierarchy for Lockout. TPM Error:0x98e ERROR: Unable to run tpm2_takeownership…

【es】解决es报错failed to authenticate user [elastic]

【es】解决es报错failed to authenticate user [elastic] 1.背景 某天使用接口查询es数据时出现报错&#xff0c;没有返回数据。想到是测试环境的es因为没内存又挂了&#xff0c;于是上服务器重启服务。 但是重启后等待一段时间再次查询es&#xff0c;还是同样报错&#xff0…

github使用问题汇总

1. Permission denied 1.1. 问题描述 Permission denied (publickey). fatal: Could not read from remote repository. 1.2. 解决方法 生成公钥 ssh-keygen -t ed25519 -C "your_emailexample.com" 点击回车三次 Generating public/private ed25519 key pair. …

无法获取auth_request返回的标头和状态码

这里写自定义目录标题 欢迎使用Markdown编辑器 欢迎使用Markdown编辑器 我有以下测试nginx配置&#xff1a; user nginx; worker_processes auto;error_log /dev/stderr debug; pid /var/run/nginx.pid;events {worker_connections 1024; }http {include /et…

02.02_111期_C++_模板笔记

使用函数模板 实现一个函数就可以起到上面三个函数才能起到的作用 当数据类型是int时&#xff0c;编译器生成一个函数&#xff0c;其形参类型都是int 当数据类型时double时&#xff0c;编译器生成一个函数&#xff0c;其形参类型都是double 在写入template<typename T>这…

Idea:Idea导入Module、子Module的方式及其可能遇到的问题

参考&#xff1a;https://blog.csdn.net/qjyws/article/details/127617536 1.父module的maven添加sub module xxx-module-xxx-api xxx-module-xxx-biz 2.project structure–>import module–>添加sub module 3.maven–>Reload project即可

为什么大模型需要向量数据库?

AIGC 时代万物都可以向量化&#xff0c;向量化是 LLM 大模型以及 Agent 应用的基础。 比如&#xff1a;爆火的 Google 大模型 Gemini 1.0 原生支持的多模态&#xff0c;在预训练的时候就是把文本、图片、音频、视频等多模态先进行 token 化&#xff0c;然后构建一维的“语言”…

深掘开源安全需求,破解开源治理难题

当下&#xff0c;中国金融科技行业在数字支付、数字信贷、金融风控等领域取得了很多创新成果&#xff0c;大幅提升了金融数字化和智能化水平&#xff0c;已经在金融科技的全球竞争中走在前列。 在此进程中&#xff0c;开源技术发挥了不可或缺的重要作用&#xff0c;根据我国金…