【力扣hot100】刷题笔记Day17

前言

  • 今天竟然不用开组会!天大的好消息,安心刷题了

46. 全排列 - 力扣(LeetCode)

  • 回溯(排列)

    • class Solution:def permute(self, nums: List[int]) -> List[List[int]]:# 回溯def backtrack():if len(path) == len(nums):res.append(path[:])  # 如果path长度达到要求,收集结果,注意python要拷贝resreturn for i in range(len(nums)):if used[i] == 0:  # 遍历所有没用过的used[i] = 1path.append(nums[i])backtrack()path.pop()  # 撤销used[i] = 0  # 撤销# 可变对象在函数中可以直接改不需要作为参数,也不需要写self,只有赋值需要# 比如:递归里self.res= max(self.res,l+r)需要用self或递归里nonlocal res声明n = len(nums)used = [0] * npath = []res = []backtrack()return res
  • 回溯(交换填充)

    • class Solution:def permute(self, nums: List[int]) -> List[List[int]]:def backtrack(first = 0):# 所有数都填完了if first == n:  res.append(nums[:])for i in range(first, n):# 动态维护数组nums[first], nums[i] = nums[i], nums[first]# 继续递归填下一个数backtrack(first + 1)# 撤销操作nums[first], nums[i] = nums[i], nums[first]n = len(nums)res = []backtrack()return res

 78. 子集 - 力扣(LeetCode)

  • 回溯(组合)

    • class Solution:def subsets(self, nums: List[int]) -> List[List[int]]:def backtrack(start=0):res.append(path[:])  # 每到一个节点就传一次答案# if start == n: return  # 下面的for循环隐含这个终止条件for i in range(start, n):path.append(nums[i])backtrack(i+1)  # 注意这里传入的是i+1path.pop()n = len(nums)res = []path = []backtrack(0)return res
      

17. 电话号码的字母组合 - 力扣(LeetCode) 

  • 回溯(不同集合的组合)

    • class Solution:def letterCombinations(self, digits: str) -> List[str]:def backtrack(index = 0):if index == len(digits):res.append("".join(path))  # 不用传复制因为已经新建字符串了returns = mp[int(digits[index])]  # 取出对应数字的字符串for c in s:path.append(c)backtrack(index+1)path.pop()if len(digits) == 0:return []mp = ['', '', 'abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz']  # 下标号码映射字符串path = []res = []backtrack()return res

39. 组合总和 - 力扣(LeetCode) 

  • 回溯(排序剪枝)

    • class Solution:def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:path = []res = []n = len(candidates)def backtrack(start, target):if target < 0: return    # 剪枝返回上一层,后面更大的数就没必要减了if target == 0:res.append(path[:])returnfor i in range(start, n):path.append(candidates[i])backtrack(i, target-candidates[i])  # 传i而不是i+1说明当前数可以重复选path.pop()candidates.sort()  # 剪枝,排序后大的数在后面选择优先级低backtrack(0, target)return res

 22. 括号生成 - 力扣(LeetCode)

  • 回溯(组合)

    • 这个题解结合官解就能看懂了,主要在于括号合法性判断上
    • class Solution:def generateParenthesis(self, n: int) -> List[str]:if n <= 0: return nres = []def backtrack(path, left, right):# 两种情况需要剪枝# 1.左括号多于n了:((((# 2.右括号多于左括号:())if left > n or right > left: returnif len(path) == 2 * n:  # 因为括号都是成对出现的res.append(path)returnbacktrack(path + '(', left + 1, right)  # 生成一个加一个backtrack(path + ')', left, right + 1)backtrack('', 0, 0)return res

后言

  • 今天就到这吧,还有其他事情,感觉回溯还不熟练,脑子里模拟不太出来,待会去看看代码随想录再熟悉熟悉 

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

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

相关文章

C++学习第四天(类与对象下)

1、构造函数的其他知识 构造函数体赋值 在创建对象时&#xff0c;编译器通过调用构造函数&#xff0c;给对象中各个成员变量一个合适的初始值 构造函数调用之后&#xff0c;对象中已经有了一个初始值&#xff0c;但是不能将其称为对对象中成员变量的初始化&#xff0c;构造函…

Nginx+keepalived 高可用高性能

什么是高可用: 在使用 Nginx 做反向代理或者负载均衡的时候,都是以 Nginx 为入口,如果 Nginx 宕机了,那么所有的服务都无法正常提供,影响非常严重。所有我们需要保证 nginx 高可用,就是配置备份机,前一个挂了,还有后一个。 为了避免负载均衡服务器宕机造成严重影响,…

关于游戏报错提示x3daudio1_7.dll丢失怎么修复?多个实测有效方法分享

x3daudio1_7.dll 是一个与 Microsoft DirectX 相关的重要动态链接库&#xff08;DLL&#xff09;文件&#xff0c;它主要服务于Windows操作系统下的多媒体和游戏应用程序。 一、以下是关于 x3daudio1_7.dll 文件的详细介绍 名称与位置&#xff1a; 文件名&#xff1a;x3daud…

PHP堆栈+errLog定位

调用堆栈&#xff08;Call Stack&#xff09;是一个记录了程序在运行时所有活动子例程的栈结构。它以函数调用的方式描述了程序的执行流程和调用关系。 在PHP中&#xff0c;我们可以通过打印PHP调用堆栈来辅助调试和定位代码中的问题。本文将介绍如何在PHP中打印调用堆栈&…

探秘Python的Pipeline魔法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站AI学习网站。 目录 前言 什么是Pipeline&#xff1f; Pipeline的基本用法 Pipeline的高级用法 1. 动态调参 2. 并行处理 3. 多输出 …

Spring底层源码分析

spring依赖注入底层原理解析 spring之bean对象生命周期步骤详情 流程&#xff1a; UserService.class —>推断构造方法—>普通对象----依赖注入------>初始化&#xff08;afterPropertiesSet方法&#xff09;------>初始化后&#xff08;AOP&#xff09;------…

Zabbix“专家坐诊”第231期问答

问题一 Q&#xff1a;用docker-compose部署zabbix&#xff0c;部署完后如果要修改zabbix的配置应该要改docker-compose文件里的环境变量吧&#xff1f;改了环境变量之后只能重建容器才能生效吗&#xff1f;能不能在不影响已经配好的那些监控项的情况下让新的环境变量生效&#…

洛谷P1331海战

题目背景 在峰会期间&#xff0c;武装部队得处于高度戒备。警察将监视每一条大街&#xff0c;军队将保卫建筑物&#xff0c;领空将布满了 F-2003 飞机。 此外&#xff0c;巡洋船只和舰队将被派去保护海岸线。不幸的是&#xff0c;因为种种原因&#xff0c;国防海军部仅有很少…

win安装卸载python3.13

一、安装 访问python官网&#xff1a;https://www.python.org/ 点击“Downloads” 点击“Windows” 找到自己要下载的版本和位数&#xff0c;比如我这个是3.13版本、64位的安装包 下载好了之后&#xff0c;双击安装包 勾选“Add python.exe to PATH”&#xff1a;把python环…

[记录]-PyCharm中的Unresolved Reference疾病专治

转载https://blog.csdn.net/qq_36166962/article/details/115905359?ops_request_misc%257B%2522request%255Fid%2522%253A%2522170930227516800227476736%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id170930227516800227476736&biz_i…

作业1-224——P1331 海战

思路 深搜的方式&#xff0c;让它只遍历矩形块&#xff0c;然后在下面的遍历中判断是否出现矩形块交叉&#xff0c;但是很难实现&#xff0c;然后发现可以通过在遍历过程中判断是否合法。 参考代码 #include<iostream> #include<cstdio> using namespace std; …

SQLSERVER 2014 删除数据库定时备份任务提示失败DELETE 语句与 REFERENCE 约束“FK_subplan_job_id“冲突

SQLSERVER 2014 删除数据库定时备份任务提示失败DELETE 语句与 REFERENCE 约束“FK_subplan_job_id“冲突 &#xff0c;错误如图&#xff1a; 问题原因&#xff1a;不能直接删除作业 任务&#xff0c;需要先删除计划里面的日志、删除代理作业、删除子计划以后才能删除作业。 解…

蓝桥杯:真题讲解3(C++版)附带解析

报纸页数 来自&#xff1a;2016年七届省赛大学C组真题&#xff08;共8道题) 分析&#xff1a; --画出报纸长的样子&#xff0c;如果我们在上面多画一张报纸&#xff0c;那么就符合题意的5&#xff0c;6&#xff0c;11&#xff0c;12。 观察这张图&#xff1a;观察3&#xf…

VUE3子组件实例方法暴露(导出)方法

最近很多朋友私我请教子组件实例的获取方法 解答&#xff1a; vue2中可直接通过父组件内组件的ref读取子组件的实例&#xff0c;vue3有些许区别 vue3中需要在子组件中导出&#xff08;暴露&#xff09;相关实&#xff08;你需要再父组件中调用&#xff09;例方法&#xff1a;…

力扣:35. 搜索插入位置

力扣&#xff1a;35. 搜索插入位置 描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,…

Mybatis | Mybatis的核心配置

目录: Mybatis的核心配置 :一、MyBatis的 “核心对象”1.1 SqlSessionFactory1.2 SqlSession :SqlSession对象中的操作数据库的方法 :\<T> T selectOne ( String statement )\<T> T selectOne( String statement , Object parameter )\<E> List\<E> se…

SpringBoot基于注解实现全局日期格式化

首先根据项目要求提供自定义的日期序列化器和反序列化器&#xff0c;其中包括&#xff1a; DateJsonSerializerextendsJsonSerializer 表示将Date格式化为日期字符串。DateJsonDeserializerextendsJsonDeserializer 表示将日期字符串解析为Date日期。 使用注解 JsonComponent…

openGauss学习笔记-232 openGauss性能调优-系统调优-资源负载管理-资源管理准备-资源规划

文章目录 openGauss学习笔记-232 openGauss性能调优-系统调优-资源负载管理-资源管理准备-资源规划 openGauss学习笔记-232 openGauss性能调优-系统调优-资源负载管理-资源管理准备-资源规划 完成资源负载管理功能配置前&#xff0c;需要先根据业务模型完成租户资源的规划。业…

绍兴市新昌县人大一行莅临迪捷软件走访考察

2024年2月29日下午&#xff0c;绍兴市新昌县人大常委会副主任王敏慧一行莅临迪捷软件走访考察&#xff0c;绍兴市委科创委副主任、科创走廊建设领导小组副组长、市人大一级巡视员王继岗&#xff0c;绍兴市科技局副局长、科创走廊建设办公室常务副主任梁枫陪同。 王主任一行听取…

九州金榜|导致孩子厌学因素有哪些?家庭教育中要怎样解决?

现在如今孩子出现厌学的情况越来越严重&#xff0c;这也难坏了很多家长&#xff0c;众所周知&#xff0c;当下社会竞争越来越激烈&#xff0c;孩子的压力也越来越大&#xff0c;这也是导致孩子厌学的主要因素。其实家庭因素也是引起孩子厌学情绪产生的重要原因&#xff0c;在家…