【代码随想录训练营】【Day 30】【回溯-4】| Leetcode 93, 78, 90

2024-05-26 17:20

本文主要是介绍【代码随想录训练营】【Day 30】【回溯-4】| Leetcode 93, 78, 90,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【代码随想录训练营】【Day 30】【回溯-4】| Leetcode 93, 78, 90

需强化知识点

题目

93. 复原 IP 地址

  • 分割问题:注意终止条件,要加path长度的限制
class Solution:def restoreIpAddresses(self, s: str) -> List[str]:def isRight(select):if len(select) > 3:return Falseif len(select) > 1 and select[0] == '0':return Falseif int(select) > 255:return Falsereturn Truedef backtracking(s, path, result, startIndex):if len(path) > 4:returnif startIndex == len(s) and len(path) == 4:result.append(".".join(path))returnfor i in range(startIndex, len(s)):select = s[startIndex: i+1]if isRight(select):path.append(select)backtracking(s, path, result, i+1)path.pop()result = []backtracking(s, [], result, 0)return result

78. 子集

  • 子集问题:result加path的时候不加限制
class Solution:def subsets(self, nums: List[int]) -> List[List[int]]:def backtracking(nums, startIndex, path, result):result.append(path[:])for i in range(startIndex, len(nums)):path.append(nums[i])backtracking(nums, i+1, path, result)path.pop()result = []backtracking(nums, 0, [], result)return result

90. 子集 II

  • 去重:横向遍历利用startIndex去重
class Solution:def subsetsWithDup(self, nums: List[int]) -> List[List[int]]:def backtracking(nums, path, result, startIndex):result.append(path[:])for i in range(startIndex, len(nums)):if i > startIndex and nums[i] == nums[i-1]:continuepath.append(nums[i])backtracking(nums, path, result, i+1)path.pop()nums.sort()result = []backtracking(nums, [], result, 0)return result

这篇关于【代码随想录训练营】【Day 30】【回溯-4】| Leetcode 93, 78, 90的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1005106

相关文章

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.

C++归并排序代码实现示例代码

《C++归并排序代码实现示例代码》归并排序将待排序数组分成两个子数组,分别对这两个子数组进行排序,然后将排序好的子数组合并,得到排序后的数组,:本文主要介绍C++归并排序代码实现的相关资料,需要的... 目录1 算法核心思想2 代码实现3 算法时间复杂度1 算法核心思想归并排序是一种高效的排序方式,需要用

springboot项目中集成shiro+jwt完整实例代码

《springboot项目中集成shiro+jwt完整实例代码》本文详细介绍如何在项目中集成Shiro和JWT,实现用户登录校验、token携带及接口权限管理,涉及自定义Realm、ModularRe... 目录简介目的需要的jar集成过程1.配置shiro2.创建自定义Realm2.1 LoginReal

SpringBoot集成Shiro+JWT(Hutool)完整代码示例

《SpringBoot集成Shiro+JWT(Hutool)完整代码示例》ApacheShiro是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,在现代应用开发中,Shiro因... 目录一、背景介绍1.1 为什么使用Shiro?1.2 为什么需要双Token?二、技术栈组成三、环境

Java 与 LibreOffice 集成开发指南(环境搭建及代码示例)

《Java与LibreOffice集成开发指南(环境搭建及代码示例)》本文介绍Java与LibreOffice的集成方法,涵盖环境配置、API调用、文档转换、UNO桥接及REST接口等技术,提供... 目录1. 引言2. 环境搭建2.1 安装 LibreOffice2.2 配置 Java 开发环境2.3 配

Python跨文件实例化、跨文件调用及导入库示例代码

《Python跨文件实例化、跨文件调用及导入库示例代码》在Python开发过程中,经常会遇到需要在一个工程中调用另一个工程的Python文件的情况,:本文主要介绍Python跨文件实例化、跨文件调... 目录1. 核心对比表格(完整汇总)1.1 自定义模块跨文件调用汇总表1.2 第三方库使用汇总表1.3 导

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁

精选20个好玩又实用的的Python实战项目(有图文代码)

《精选20个好玩又实用的的Python实战项目(有图文代码)》文章介绍了20个实用Python项目,涵盖游戏开发、工具应用、图像处理、机器学习等,使用Tkinter、PIL、OpenCV、Kivy等库... 目录① 猜字游戏② 闹钟③ 骰子模拟器④ 二维码⑤ 语言检测⑥ 加密和解密⑦ URL缩短⑧ 音乐播放