回溯

-dzk-2 天前
算法·回溯
【回溯】LC 22.括号生成本专栏文章为《LeetCode 热题 100》的刷题题解,相关内容如有侵权,立即删除。22.括号生成核心思路是回溯+剪枝 如果暴力枚举所有可能的括号组合(长度为 2 n 2n 2n,每个位置选 ( 或 )),会有 2 2 n 2^{2n} 22n 种可能,效率极低。 有效的括号序列必须满足两个关键约束:
我不会起名字3226 天前
java·数据结构·后端·python·leetcode·go·回溯
一天一道算法题(35):电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
a1879272183117 天前
算法·leetcode·动态规划·dp·回溯·暴力·算法讲解
【算法】动态规划第二篇:双序列 DP 三课——继承、计步与断链DP 第一篇(打家劫舍三版演化 → 最大子数组 → LIS)收官在一维。这一篇进二维双序列,一天三题:最长公共子序列(LC1143)→ 编辑距离(LC72)→ 最长重复子数组(LC718)。三题骨架相同(dp[i][j] 看两处末尾),灵魂各异:LCS 是继承型(不等时 max 搬运)、编辑距离是计步型(三操作各消一个末尾)、子数组是断链型(不等归零)。踩的坑包括:两个 bug 互相抵消的测试陷阱、dp[0][0] 的语义漂移、“结尾限定型"的惯性误用、手推表"结果对过程错”、以及 go1.21 内建 m
a1879272183118 天前
算法·leetcode·go·剪枝·回溯·n皇后·算法讲解
【算法】回溯算法(三):三记重锤与 N 皇后——记忆化、状态设计与三层漏斗回溯系列第三篇,收官。上一篇以 LC842 验收"毕业",我以为真毕业了——接下来三记重锤锤醒了梦:记忆化的三次错位(417 万次调用 vs 176 次,缓存选择、缓存候选、只写不读一路踩过去)、排序被禁后的去重(层属性 vs 路径属性,usedThisLevel 不还原是精髓)、中间态失控(把 Go 的栈撑爆 1GB)。三锤全部指向同一件事:状态设计。最后用 N 皇后收官(对角线编号 r±c + 三个标记数组 + 四动作对),并把整个系列沉淀成三层漏斗识别框架和写题前的终极检查清单。本篇也是通往动态规划
a1879272183118 天前
算法·leetcode·动态规划·dp·回溯·暴力
【算法】动态规划入门:从打家劫舍到状态设计的三堂课回溯学完之后,我进了动态规划(DP)的坑。这篇文章记录 DP 第 1 级(一维 DP)的完整学习过程:从「打家劫舍」的三版演化链(回溯暴力 → 记忆化递归 → DP 数组)开始,看 DP 如何从回溯里一步步"长"出来;再到「最大子数组和」学习状态定义的限定词技巧,到「最长递增子序列」补上前驱枚举。每个坑都有错误代码、实测数据(4831 万次调用 vs 71 次、全 0 数组上 435 万次 vs 61 次)和修正方案。适合刚学完回溯、准备进 DP 的人对照着少走弯路。
a1879272183119 天前
算法·leetcode·go·回溯·leetcode93·ip复原·算法讲解
【算法】回溯算法(一):从一道 IP 题到万能模板回溯系列第一篇,入门。从「复原 IP 地址」这道经典题出发,完整走一遍回溯的标准建模流程:把约束拆干净 → 画决策树 → 套三要素 → 三层剪枝 → 写代码 → 踩题内小坑。最后沉淀出一份可复用的回溯模板——八字口诀「判终、砍支、循环三连」,加上决策三形态和三验证。本篇是纯入门,一次车都不翻;翻车实录在第二篇,五个坑一个比一个深。
rannn_1111 个月前
java·算法·leetcode·回溯
【力扣hot100】回溯专题|全排列、子集、字母组合、组合总和、括号生成、单词搜索、分割回文串、N皇后dfs(i) —> dfs(i+1)46. 全排列核心流程定义状态:终止条件 (if (tmp.size() == nums.length)):
爱编程的小新☆1 个月前
java·算法·leetcode·深度优先·回溯·flood fill
【LeetCode】从递归到 Flood Fill:5 道题吃透 DFS 的选择、回溯与标记刷算法题时,很多小伙伴都会卡在“我能看懂答案,但自己想不出来”这一步。尤其是遇到递归代码时,我们明明认识每一行 Java 语句,却不知道程序为什么会不断进入 dfs(),又为什么在递归结束后删除刚刚加入的元素。组合题是一种写法,二叉树是一种写法,二维网格似乎又变成了另一套知识。
伟大的车尔尼2 个月前
回溯
回溯题目:N 皇后标题:N 皇后出处:51. N 皇后6 级N 皇后问题研究的是如何将 n \texttt{n} n 个皇后放置在 n × n \texttt{n} \times \texttt{n} n×n 的棋盘上,使皇后彼此之间不能相互攻击。
伟大的车尔尼3 个月前
回溯
回溯题目:复原 IP 地址标题:复原 IP 地址出处:93. 复原 IP 地址5 级有效 IP 地址由恰好四个整数和分隔整数的点组成。每个整数在范围 0 \texttt{0} 0 到 255 \texttt{255} 255 中,且不能含有前导零。
伟大的车尔尼3 个月前
回溯
回溯题目:电话号码的字母组合标题:电话号码的字母组合出处:17. 电话号码的字母组合4 级给定一个仅包含数字 2-9 \texttt{2-9} 2-9 的字符串,返回该字符串能表示的所有字母组合。答案可以按任意顺序返回。
z200509304 个月前
算法·leetcode·回溯
今日算法(带回文问题的回溯)给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文串。 返回所有可能的分割方案。示例 1 输入:s = "aab" 输出:[["a","a","b"],["aa","b"]]
每天回答3个问题4 个月前
算法·深度优先·回溯
LeetCodeHot100|回溯算法、46.全排列、78.子集、17.电话号码的字母组合回溯算法是一种通过穷举来解决问题的方法,它的核心是从一个初始状态出发,暴力搜索所有可能的解决方案,当遇到正确的解则将其记录,直到找到解或者尝试了所有可能的选择都无法找到解为止。
superior tigre5 个月前
算法·leetcode·深度优先·回溯
78 子集难度: 🟡 中等 标签: 数组 回溯给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。
kronos.荒5 个月前
python·回溯
非递减序列(python)思路:非递减子序列,也是一种子集问题,也需要在进入递归就收集答案。这里需要注意,因为要求是序列,所以不能排序,这里需要使用set()在树层去重。同时,对于当前遍历到的元素,不能比path里面的小,如果小,则跳过该元素的搜索。
kronos.荒5 个月前
python·回溯
回溯(python)模板:def dfs(参数):if(停止条件):收集答案退出for(集合):处理节点递归函数回溯
kronos.荒5 个月前
python·回溯
N皇后问题(python)描述:给定一个棋盘,求可以在棋盘上放置n个皇后的方案。对于放置皇后的位置,要求同一行同一列只能放置一个皇后。同时,斜向的45度方向也只能放置一个皇后。
kronos.荒5 个月前
python·回溯
全排列2(重复元素去重、python)思路:看到需要去重的,如果不要求顺序或者是序列,首先要排序。由于数组中出现重复元素,所以需要去重。在树层上去重,如何才能知道在同一层?即当used[i-1]=0时,说明已经完成了回溯,回到了上一层。此时,当nums[i]=nums[i-1]时,说明该层出现重复元素,跳过该元素的搜索。
W23035765735 个月前
动态规划·回溯·算法设计·0-1背包
0-1 背包进阶:回溯法(子集树)+ 分支限界优化 极致详解(C++ 完整实现)在上一篇 0-1 背包动态规划详解中,我们学习了自底向上填表、递归记忆化搜索等解法,核心是通过动态规划高效求解最大价值。