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

【力扣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

后言

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

相关文章:

【力扣hot100】刷题笔记Day17

前言 今天竟然不用开组会&#xff01;天大的好消息&#xff0c;安心刷题了 46. 全排列 - 力扣&#xff08;LeetCode&#xff09; 回溯&#xff08;排列&#xff09; class Solution:def permute(self, nums: List[int]) -> List[List[int]]:# 回溯def backtrack():if len(…...

leetcode日记(34)通配符匹配

这道题做了很久很久……一开始我想用的方法是使用双指针&#xff0c;分别指向两数组&#xff0c;然后依次按照题目中的规则遍历&#xff0c;做了很久发现时间超限了&#xff01;这是我最后超时的代码&#xff01; class Solution { public:bool isMatch(string s, string p) {…...

一张图读懂人工智能

一、生成人工智能的概念和应用&#xff0c;以及如何使用大型语言模型进行聊天和创造原创内容。这项技术将会对人类和企业产生深远影响。 计算机获得学习、思考和交流的能力&#xff0c;被称为生成人工智能。生成人工智能可以立即获得人类所有知识的总和&#xff0c;并回答任何…...

5.37 BCC工具之uflow.py解读

一,工具简介 uflow工具用于跟踪方法的进入和退出事件,并打印一个可视化的流程图,显示方法是如何进入和退出的,类似于带有断点的跟踪调试器。这对于理解Java、Perl、PHP、Python、Ruby和Tcl等高级语言中的程序流非常有用,这些语言为方法调用提供了USDT探测。 二,代码示例…...

R语言简介,R语言开发环境搭建步骤,R基础语法以及注释详解

R语言是一种用于统计计算与绘图的编程语言&#xff0c;由新西兰奥克兰大学的统计学家罗斯伊哈卡和罗伯特杰特曼于1993年发明。R语言是一种自由、免费、源代码开放的软件&#xff0c;属于GNU系统的一个分支&#xff0c;如今被广泛地应用于统计分析、数据挖掘等领域。 R语言的特…...

【Django】执行查询—检索对象

检索对象 以下述模型为基础&#xff0c;讨论检索对象的方式方法&#xff1a; from datetime import datefrom django.db import modelsclass Blog(models.Model):name models.CharField(max_length100)tagline models.TextField()def __str__(self):return self.nameclass …...

Python:练习:编写一个程序,写入一个美金数量,然后显示出如何用最少的20美元、10美元、5美元和1美元来付款

案例&#xff1a; python编写一个程序&#xff0c;写入一个美金数量&#xff0c;然后显示出如何用最少的20美元、10美元、5美元和1美元来付款&#xff1a; Enter a dollar amout:93 $20 bills: 4 $10 bills: 1 $5 bills:0 $1 bills:3 思考&#xff1a; 写入一个美金数量&…...

模板方法模式 详解 设计模式

模板方法模式 模板方法模式是一种行为型设计模式&#xff0c;它定义了一个算法的骨架&#xff0c;将一些步骤延迟到子类中实现。这种模式允许子类在不改变算法结构的情况下重新定义算法的某些步骤。 结构 抽象类&#xff08;Abstract Class&#xff09;&#xff1a;负责给出一…...

Node.js_基础知识(http模块)

网络基础 URL的组成结构&#xff1a;协议名: // 主机名 [:端口号] [/路径] [?查询字符串]协议默认端口&#xff1a; http&#xff1a;80&#xff0c;开发常用端口有 3000、8080、8090、9000https: 443 如果端口被其他程序占用&#xff0c;可以使用 资源监视器 找到占用端口的…...

matlab工具包

matlab安装yalmip和cplex出错 - 知乎 (zhihu.com) Cplex的安装和使用实例-CSDN博客 一条龙教程&#xff1a;Matlab下使用yalmip(工具箱)cplex&#xff08;求解器&#xff09;_使用yalmip和cplex求解器进行建模和求解的步骤如下:-CSDN博客 啊啊啊&#xff0c;好开心&#xff…...

UCSF DOCK 分子对接详细案例(01)- rigid, fixed anchor, flexible dock

欢迎浏览我的CSND博客&#xff01; Blockbuater_drug …点击进入 文章目录 前言一、操作环境二、研究背景三、受体-配体结构文件准备3.1准备文件夹DOCK_workdir, 下载晶体结构3.1.1 来自湿实验的受体配体共晶结构&#xff1a;3.1.2 来自深度学习和语言模型推理预测的蛋白结构&a…...

java基础(4)注解,集合,

注解 什么是注解&#xff08;Annotation&#xff09;&#xff1f;注解是放在Java源码的类、方法、字段、参数前的一种特殊“注释” // this is a component: Resource("hello") public class Hello {Injectint n;PostConstructpublic void hello(Param String name…...

基于springboot+vue的大学城水电管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…...

代码随想录算法训练营第四十六天| 139.单词拆分、卡码网第56题

代码随想录算法训练营第四十六天| 139.单词拆分、卡码网第56题 139.单词拆分卡码网第56题 139.单词拆分 题目链接 文章讲解 class Solution { public:bool wordBreak(string s, vector<string>& wordDict) {int bagSize s.size(), n wordDict.size();vector<boo…...

Redis 在 Linux 系统下安装部署的两种方式详细说明

小伙伴们好&#xff0c;欢迎关注&#xff0c;一起学习&#xff0c;无限进步 Redis安装和配置 1、首先在官网下载好redis-6.0.9.tar.gzhttp://redis.io/ 或者使用 wget 命令下载&#xff1a;wget http://download.redis.io/releases/redis-6.0.9.tar.gz 2、下载使用上传到阿里…...

【茶话数据结构】查找最短路径——Dijkstra算法详解(保姆式详细图解,步步紧逼,保你学会)

&#x1f4af; 博客内容&#xff1a;【茶话数据结构】查找最短路径——Dijkstra算法详解 &#x1f600; 作  者&#xff1a;陈大大陈 &#x1f989;所属专栏&#xff1a;数据结构笔记 &#x1f680; 个人简介&#xff1a;一个正在努力学技术的准前端&#xff0c;专注基础和实…...

Webserver解决segmentation fault(core dump)段错问问题

前言 在完成了整个项目后&#xff0c;我用make命令编译了server&#xff0c;当我运行./server文件时&#xff0c;出现了段错误 在大量的代码中找出错因并不是一件容易的事&#xff0c;尤其是对新手程序员来说。而寻找bug的过程就像是侦探调查线索追查凶手一样&#xff0c;我们…...

存储过程基本了解

文章目录 介绍存储过程示例1. 目的2. 输入参数3. 输出参数4. 执行逻辑5. 返回值6. 示例用法7. 注意事项 存储过程的关键字有哪些简单实操 介绍 存储过程是一组预编译的SQL语句&#xff0c;以及流程控制语句&#xff0c;封装在数据库服务器中并可以被重复调用。它们可以接收参数…...

『大模型笔记』RAG应用的12种调优策略指南

RAG应用的12种调优策略指南 文章目录 一. 概要二. 数据索引2.1. 数据清洗2.2. 分块2.3. 嵌入模型2.4. 元数据(或未向量化的数据)2.5. 多索引2.6. 索引算法三. 推理阶段(检索和生成)3.1. 检索参数3.2. 高级检索策略3.3. 重新排序模型3.5. 大语言模型(LLM)...

leedcode刷题--day7(字符串)

23 文章讲解 力扣地址 C class Solution { public:void reverseString(vector<char>& s) {int left 0;int right s.size() - 1; // right 应该初始化为 s.size() - 1while (left < right) {swap(s[left], s[right]); // 直接交换 s[left] 和 s[right] 的值lef…...

Intv_AI_MK11 前端设计辅助:基于 UI/UX 原则的交互方案生成

Intv_AI_MK11 前端设计辅助&#xff1a;基于 UI/UX 原则的交互方案生成 1. 引言&#xff1a;当AI遇见前端设计 想象一下这样的场景&#xff1a;产品经理刚开完需求评审会&#xff0c;设计师正在构思界面原型&#xff0c;前端工程师准备开始编码。这时&#xff0c;一个共同的挑…...

主流Attention Backend技术选型与实战场景剖析

1. Attention Backend技术全景解析 当你用ChatGPT生成一段文字&#xff0c;或者让Stable Diffusion画一幅画时&#xff0c;背后都有一个关键组件在默默工作——Attention Backend。这就像汽车发动机里的涡轮增压器&#xff0c;虽然用户看不见&#xff0c;却直接决定了AI模型的&…...

[具身智能-363]:Hugging Face LeRobot 详解:像训练语言模型一样训练机器人

LeRobot 是 Hugging Face 于 2024 年 5 月 正式开源的机器人学习框架&#xff0c;专注于模仿学习&#xff08;Imitation Learning&#xff09;与视觉-语言-动作基础模型&#xff08;VLA&#xff09;。它的核心目标是&#xff1a;降低机器人 AI 的开发门槛&#xff0c;提供从数据…...

OmenSuperHub:让你的游戏本性能飙升,告别臃肿官方软件

OmenSuperHub&#xff1a;让你的游戏本性能飙升&#xff0c;告别臃肿官方软件 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度&#xff0c;自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 还在为官方Omen Gaming Hub的…...

破解macOS游戏输入壁垒:360Controller逆向工程的技术探索

破解macOS游戏输入壁垒&#xff1a;360Controller逆向工程的技术探索 【免费下载链接】360Controller TattieBogle Xbox 360 Driver (with improvements) 项目地址: https://gitcode.com/gh_mirrors/36/360Controller 在macOS平台上&#xff0c;游戏手柄支持一直是个被忽…...

StructBERT开源大模型部署教程:WebUI访问权限控制(Basic Auth)安全加固

StructBERT开源大模型部署教程&#xff1a;WebUI访问权限控制&#xff08;Basic Auth&#xff09;安全加固 1. 项目概述与安全需求 StructBERT是一个基于百度开源技术的高精度中文句子相似度计算模型&#xff0c;能够准确判断两个中文句子在语义上的相似程度。这个工具在文本…...

面试官:说说JVM的栈上分配、TLAB、PLAB有啥区别?

我们在学习 G1 回收器的时候&#xff0c;一般我们都会接触到 TLAB 和 PLAB 这两个术语。它们都是为了提高内存分配效率而存在的&#xff0c;但它们和栈上分配有什么区别呢&#xff1f;今天&#xff0c;就让树哥带着大家盘一盘。栈上分配稍微了解过 Java 虚拟机内存结构的同学都…...

EtherCAT FOE文件传输实战:用SSC工具包手把手实现从站固件读写(附完整代码)

EtherCAT FOE文件传输实战&#xff1a;从协议原理到工业级实现 在工业自动化领域&#xff0c;固件升级和参数配置的可靠性直接关系到生产线的稳定性。传统方式需要拆机烧录或依赖不稳定的串口传输&#xff0c;而EtherCAT的FOE&#xff08;File Access over EtherCAT&#xff09…...

告别pip install tensorrt:手把手教你用TensorRT 10.0的tar包在Ubuntu 22.04上搭建稳定AI推理环境

告别pip install tensorrt&#xff1a;手把手教你用TensorRT 10.0的tar包在Ubuntu 22.04上搭建稳定AI推理环境 在AI模型部署领域&#xff0c;TensorRT作为NVIDIA推出的高性能推理引擎&#xff0c;能够显著提升模型在NVIDIA GPU上的运行效率。然而&#xff0c;许多开发者习惯性地…...

MongoDB 删除数据库

MongoDB 删除数据库 摘要 MongoDB 是一个高性能、可扩展的文档存储数据库,它提供了灵活的数据模型和强大的数据操作能力。在管理 MongoDB 数据库时,删除数据库是一个重要的操作。本文将详细介绍如何在 MongoDB 中删除数据库,包括安全性和效率的考虑。 引言 在 MongoDB 中…...