当前位置: 首页 > news >正文

算法记录 | Day28 回溯算法

93.复原IP地址

思路:

1.确定回溯函数参数:定义全局遍历存放res集合和单个path,还需要

  • s字符

  • startindex(int)为下一层for循环搜索的起始位置。

2.终止条件:当len(path)==4且遍历到字符串最末尾,将path加入res,len(path)>4 return

3.遍历过程:取temp= s[startindex:i+1],判断是否合法

  • 不能超过255
  • 0不能为前导
    • 不能为00
    • 不能为非0数字前导,e.g: 011
class Solution:def restoreIpAddresses(self, s: str) -> List[str]:res = []path = []def backtrack(s,startindex):if len(path)>4:return if len(path) == 4 and startindex == len(s):res.append(".".join(path))return for i in range(startindex, len(s)):temp = s[startindex:i+1]if int(temp)>255:continueif int(temp) == 0 and i!=startindex:continueif s[startindex]=='0'and int(temp)>0:continuepath.append(temp)backtrack(s,i+1)path.pop()backtrack(s,0)return res

78. 子集

思路:

1.确定回溯函数参数:定义全局遍历存放res集合和单个path,还需要

  • nums数组
  • startindex(int)为下一层for循环搜索的起始位置。

2.终止条件:当startindex >len(nums),完成遍历终止

3.遍历过程:求取子集问题,不需要任何剪枝!因为子集就是要遍历整棵树

class Solution:def subsets(self, nums: List[int]) -> List[List[int]]:res = []path = []def backtrack(nums,startindex):if startindex>len(nums):returnif len(path)<=len(nums):res.append(path[:])for i in range(startindex,len(nums)):path.append(nums[i])backtrack(nums,i+1)path.pop()backtrack(nums,0)return res

90. 子集 II

思路:

1.确定回溯函数参数:定义全局遍历存放res集合和单个path,还需要

  • nums数组
  • startindex(int)为下一层for循环搜索的起始位置。

2.终止条件:当startindex >len(nums),完成遍历终止

3.遍历过程:去重,先对nums排序,for循环层不能使用相同元素,排序数组,判断nums[i]==nums[i-1]

class Solution:def subsetsWithDup(self, nums: List[int]) -> List[List[int]]:res = []path = []nums.sort()def backtrack(nums,startindex):if startindex>len(nums):returnif len(path)<=len(nums):res.append(path[:])for i in range(startindex,len(nums)):if i>startindex and nums[i] ==nums[i-1]:continuepath.append(nums[i])backtrack(nums,i+1)path.pop()backtrack(nums,0)return res

相关文章:

算法记录 | Day28 回溯算法

93.复原IP地址 思路&#xff1a; 1.确定回溯函数参数&#xff1a;定义全局遍历存放res集合和单个path&#xff0c;还需要 s字符 startindex&#xff08;int&#xff09;为下一层for循环搜索的起始位置。 2.终止条件&#xff1a;当len(path)4且遍历到字符串最末尾&#xff…...

气象历史数据和空气质量历史数据资源汇总免费

气象数据和空气质量数据资源汇总 1.全球气象数据资源 WorldClim 网址&#xff1a;Global climate and weather data — WorldClim 1 documentation WorldClim是一个全球高分辨率气候数据分享平台。截止2021年03月&#xff0c;其包括以下数据&#xff1a; •Climate数据&am…...

【区块链】走进web3的世界-对于前端来说,web2与web3的区别

web3离不开几个概念&#xff0c;智能合约、区块链、前端交互 1、智能合约可以直接与区块链中的区块进行交互&#xff1b; 2、前端通过web3.js/ethers.js等npm库可以和智能合约进行交互&#xff1b; 说的直白点&#xff0c;web3与web2对于前端来说&#xff0c;只是对接的对象发生…...

深拷贝和浅拷贝

目录 一.Java的Cloneable和clone()方法 1.Object类中的clone() 2.实现Cloneable接口的类 3.通过clone()生成对象的特点 二.深拷贝和浅拷贝 1.浅拷贝 2.深拷贝 3.实现深拷贝的两种方法 1.一种是递归的进行拷贝 2.Json字符串的方式进行深拷贝 一.Java的Cloneable和clone…...

【回眸】ChatGPT Plus(GPT4体验卡)

前言 没忍住诱惑&#xff0c;开了个GPT4.0的会员&#xff0c;给大家表演一波 开通成功 开始问问题 写一个CNN疲劳驾驶监测代码&#xff0c;要求{使用Python语言&#xff0c;使用包&#xff0c;能成功运行&#xff0c;需要调用电脑摄像头&#xff0c;要求GUI界面有一些参数…...

走进小程序【七】微信小程序【常见问题总结】

文章目录&#x1f31f;前言&#x1f31f;小程序登录&#x1f31f;unionid 和 openid&#x1f31f;关键Api&#x1f31f;登录流程设计&#x1f31f;利用现有登录体系&#x1f31f;利用OpenId 创建用户体系&#x1f31f;利用 Unionid 创建用户体系&#x1f31f;授权获取用户信息流…...

光电隔离转换器 直流信号放大器 导轨安装DIN11 IPO OC系列

概述&#xff1a; 导轨安装DIN11 IPO OC系列模拟信号隔离放大器是一种将输入信号隔离放大、转换成按比例输出的直流信号混合集成厚模电路。产品广泛应用在电力、远程监控、仪器仪表、医疗设备、工业自控等需要直流信号隔离测控的行业。此系列产品内部采用了线性光电隔离技术相…...

语聊房app的开发以及运营思路

语聊房app是一种基于实时语音交流的社交应用&#xff0c;用户可以通过该应用结识新朋友、交流经验、分享兴趣爱好等&#xff0c;因此备受年轻用户的青睐。以下是语聊房app的开发以及运营思路&#xff1a; 一、开发思路 功能设计 语聊房app的核心功能是实时语音聊天&#xff0…...

目标检测基础之IOU计算

目标检测基础之IOU计算概念理解——什么是IOUdemo后记概念理解——什么是IOU IOU 交并比&#xff08;Intersection over Union&#xff09;&#xff0c;从字面上很容易理解&#xff1a;计算交集在并集的比重。从网上截张图看看 IOUA∩BA∪BIOU \frac{A \cap B}{A \cup B} IO…...

从spring boot泄露到接管云服务器平台

0x1前言 在打野的时候意外发现了一个站点存在spring boot信息泄露&#xff0c;之前就有看到一些文章可以直接rce啥的&#xff0c;今天刚好试试。通过敏感信息发现存在accesskey泄露&#xff0c;就想直接通过解密&#xff0c;获取敏感信息&#xff0c;接管云平台。 首先说下这个…...

大数据技术——spark集群搭建

目录 spark概述 spark集群搭建 1.Spark安装 2.环境变量配置 3.Spark集群配置 4.启动Spark集群 存在问题及解决方案 请参考以下文章 spark概述 Spark是一个开源的大数据处理框架&#xff0c;它可以在分布式计算集群上进行高效的数据处理和分析。Spark的特点是速度快、易…...

嵌入式学习笔记汇总

本文整理STM32、STM8和uCOS-III的所有文章链接。 STM32学习笔记目录 源码&#xff1a;mySTM32-learn STM32学习笔记&#xff08;1&#xff09;——LED和蜂鸣器 STM32学习笔记&#xff08;2&#xff09;——按键输入实验 STM32学习笔记&#xff08;3&#xff09;——时钟系统 …...

Python 全栈系列220 Tornado的服务搭建

说明 想法变的真快 本来是没打算用Tornado的&#xff0c;主要是想节约时间。但是现在看来不用还是不行&#xff1a;目前用gevent flask部署的时候&#xff0c;启动多核的worker似乎存在问题。 另外&#xff0c;有很多内部基础的数据服务&#xff0c;其实并不需要flask的各种组…...

ESXi安装CentOS

ESXi安装 参考&#xff1a;https://blog.csdn.net/tongxin_tongmeng/article/details/129466704 CentOS安装 镜像&#xff1a;http://mirrors.aliyun.com/centos/7/isos/x86_64-->CentOS-7-x86_64-DVD-2009.iso CentOS配置 FinalShell连接 ESXi简介 1.ESXi是由VMware公司…...

WebTest搭建

0.前言 此框架为真实项目实战&#xff0c;所以有些数据不便展示&#xff0c;只展示架构和思想 工具&#xff1a;pythonseleniumddtunittest 1.架构说明 2.代码封装 Commom层 base_page.py #__author__19044168 #date2021/8/26 import logging import datetime from sele…...

什么性格的人适合报考机械类专业?(高考志愿填报选专业)

机械类专业 是指涉及机械设计、制造、加工、维护等方面的专业&#xff0c;是工程类专业中的一类。机械类专业的学生主要学习机械工程的基础知识&#xff0c;包括机械设计、力学、材料力学、热力学、流体力学等&#xff0c;同时也会学习机械制造、机电一体化、机器人技术等实践性…...

进程概念详解

目录 进程是什么&#xff1f; 描述进程&#xff1a;进程控制块-PCB task_struct task_struct 是什么&#xff1f; task_struct内容分类 组织进程 查看进程 fork创建子进程 进程状态 僵尸进程 孤儿进程 进程优先级 其他概念 进程是什么&#xff1f; 一般书上…...

C语言基础——指针

文章目录一、指针1.指针的意义2.指针类型表示3.一些操作3.1打印1个变量地址3.2通过地址查看改地址的内容以及修改改地址的内容3.3操作某个空间 -- 4个字节,给他赋值为100&#xff0c;只知道该空间的地址0x8000 00004.指针变量的定义5.指针类型的大小6.指针变量的使用6.1 指针变…...

反序列化渗透与攻防(二)之Java反序列化漏洞

Java反序列化漏洞 反序列化漏洞 JAVA反序列化漏洞到底是如何产生的? 1、由于很多站点或者RMI仓库等接口处存在java的反序列化功能,于是攻击者可以通过构造特定的恶意对象序列化后的流,让目标反序列化,从而达到自己的恶意预期行为,包括命令执行,甚至 getshell 等等。 …...

优先级队列的模拟实现(仿函数)

目录&#xff1a; 1.priority_queue接口的实现&#xff08;先建大堆&#xff09; 1.push 加 向上调整的实现 2.pop 3.迭代器区间的构造 2.仿函数 3.仿函数优化我们的优先级队列 -------------------------------------------------------------------------------------------…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

android RelativeLayout布局

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...