回溯
文章平均质量分 83
萘柰奈
为做出自己的游戏而努力喵
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode刷题记录----51.N皇后(Hard)
本文提出了一种基于递归回溯的N皇后问题求解方法。通过维护二维数组记录每个格子被攻击的次数,实现棋盘状态的动态更新。算法按行放置皇后,对每行遍历所有列位置,若未被攻击则放置皇后并更新影响范围,递归处理下一行后回溯撤销影响。时间复杂度为O(N!×N²),空间复杂度O(N²)。文章还分析了斜线位置的更新方法,并指出可通过哈希表进一步优化空间至O(N)。该方案的关键在于正确处理放置皇后时的攻击范围标记和回溯时的状态恢复。原创 2025-08-30 11:18:18 · 974 阅读 · 0 评论 -
LeetCode刷题记录----131.分割回文串(Medium)
本文探讨了分割回文串问题的解法。通过递归回溯枚举所有可能的字符串分割方案,并利用双指针或动态规划优化回文判断。核心思路是:1)递归遍历字符串,逐步构建分割方案;2)当分割出的子串均为回文时保存方案。优化方法包括预处理动态规划数组dp[i][j]记录子串是否为回文,或采用记忆化搜索。算法时间复杂度为O(n·2^n),空间复杂度O(n^2)。解题关键在于将枚举分割方案与高效回文验证相结合。原创 2025-08-29 11:56:35 · 1132 阅读 · 0 评论 -
LeetCode刷题记录----79.单词搜索(Medium)
该文章探讨了在矩阵中搜索单词的深度优先搜索算法。首先通过回溯法在矩阵中匹配单词首字母,然后递归搜索四个方向。初始方案使用访问标记数组,时间复杂度O(mn4^L),空间复杂度O(mn+L)。优化方案包括:1)在原矩阵上标记访问状态;2)预处理检查字符频率。优化后空间复杂度降至O(L)。核心思路是:1)DFS回溯处理矩阵搜索;2)预处理可提前排除无效情况。两种方案的时间复杂度相同,但优化方案显著减少了空间消耗。原创 2025-08-27 10:56:52 · 421 阅读 · 0 评论 -
LeetCode刷题记录----22.括号生成(Medium)
本文探讨了生成所有合法括号组合的算法。通过递归回溯方法,在生成过程中实时判断括号合法性:左括号优先添加,右括号添加需满足剩余右括号数多于左括号数。时间复杂度为卡特兰数级别,空间复杂度O(N)。文章还提出了分治法优化思路,将合法括号分解为(A)B形式,利用动态规划缓存中间结果。此外介绍了暴力生成所有可能再验证合法性的朴素方法。总结指出:1)递归回溯加条件判断能高效解决问题;2)分治法适用于具有可分解结构的问题;3)指针可优化大量容器的存储;4)智能指针有助于内存管理。原创 2025-08-26 11:50:14 · 958 阅读 · 0 评论 -
LeetCode刷题记录----39.组合总和(Medium)
本文介绍了使用回溯算法解决组合总和问题的思路。通过递归遍历候选数组,在每一步选择数字并更新剩余目标值,当目标值减至0时记录有效组合。初始解法时间复杂度为O(n²target),空间复杂度为O(target/m)。优化方案先对数组排序,在递归过程中进行剪枝处理,当剩余目标值小于当前候选数时直接终止该分支,将时间复杂度优化为O(nlogn + KL)。文章强调回溯法适用于寻找所有可能解的问题,建议通过手动排列示例寻找规律,并指出合理剪枝能有效提升算法效率。原创 2025-08-25 10:52:15 · 1123 阅读 · 0 评论 -
LeetCode刷题记录----17.电话号码的字母组合(Medium)
本文简单记录了对于电话号码字符组合这种题的思路与做法原创 2025-08-24 11:41:51 · 576 阅读 · 0 评论 -
LeetCode刷题记录----78.子集(Medium)
本文介绍了两种求解子集问题的算法:回溯法和二进制掩码法。回溯法通过递归构建子集,每次选择当前元素是否加入,时间复杂度为O(N×2^N)。二进制掩码法则利用子集数量与二进制位的对应关系,通过位运算生成所有子集,时间复杂度相同但空间更优。两种方法都避免了重复子集的出现,分别适用于不同场景。回溯法更直观,掩码法则更高效。原创 2025-08-23 10:56:54 · 1265 阅读 · 0 评论 -
LeetCode刷题记录----46.全排列(Medium)
摘要:本文探讨了使用回溯法解决全排列问题的两种实现方式。第一种方法通过辅助数组标记已使用元素,时间复杂度O(nn!),空间复杂度O(nn!)。第二种优化方法直接在原数组上进行元素交换,将空间复杂度降至O(n)。两种方法都遵循递归处理模式:确定终止条件(完成排列)、遍历可选元素、递归处理下一位置、回溯还原状态。文章强调了递归回溯在全排列问题中的应用技巧,并指出C++中emplace操作比insert更高效。原创 2025-08-22 13:04:02 · 1037 阅读 · 0 评论
分享