技术栈
回溯
少许极端
4 天前
算法
·
剪枝
·
回溯
·
递归
算法奇妙屋(二十七)-全排列与子集问题
题目为高中学习过的全排列, 注意这里每个数字都是不重复的子集本身就是一个集合, 空集是所有集合的子集, 这里所有元素是无序的
程序员-King.
13 天前
算法
·
leetcode
·
深度优先
·
回溯
·
递归
day158—回溯—全排列(LeetCode-46)
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1:
程序员-King.
14 天前
c++
·
算法
·
leetcode
·
深度优先
·
回溯
·
递归
day159—动态规划—打家劫舍(LeetCode-198)
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。
程序员-King.
14 天前
算法
·
leetcode
·
回溯
day157—回溯—括号生成(LeetCode-22)
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例 1:
不穿格子的程序员
15 天前
算法
·
深度优先
·
回溯
从零开始写算法——回溯篇3:括号生成 + 单词搜索
回溯算法(DFS)是算法面试中的重难点。很多同学觉得它难,是因为分不清什么时候该“恢复现场”,什么时候该“标记状态”。
程序员-King.
16 天前
算法
·
leetcode
·
深度优先
·
回溯
day154—回溯—分割回文串(LeetCode-131)
给你一个字符串 s,请你将 s 分割成一些 子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。
程序员-King.
16 天前
算法
·
leetcode
·
回溯
day155—回溯—组合(LeetCode-77)
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。
程序员-King.
16 天前
算法
·
leetcode
·
回溯
day156—回溯—组合总和(LeetCode-216)
找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。
程序员-King.
16 天前
算法
·
leetcode
·
回溯
·
递归
day153—回溯—子集(LeetCode-78)
给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
不穿格子的程序员
17 天前
算法
·
深度优先
·
回溯
从零开始写算法——回溯篇2:电话号码的字母组合 + 组合总和
在之前的文章中,我们讨论了“全排列”和“子集”的区别。今天我们把难度稍微提升一点,看看在更复杂的场景下,如何灵活运用 “答案视角” 和 “输入视角” 来解题。
BLSxiaopanlaile
18 天前
数据结构
·
算法
·
剪枝
·
回溯
·
分解
关于子集和问题的几种解法
这几个子集和问题还蛮典型的,是使用回溯法的经典例题,有好几种做法,在此总结记录一下。leecode 39
不穿格子的程序员
18 天前
算法
·
leetcode
·
深度优先
·
回溯
从零开始写算法——回溯篇1:全排列 + 子集
在回溯算法(Backtracking)的学习中,我们经常会听到两个概念:“输入视角”和“答案视角”。很多时候代码写不出来,不是因为逻辑没想通,而是因为这两种视角在脑海里打架。今天我们通过两道最经典的题目——全排列(LeetCode 46)和子集(LeetCode 78),来彻底搞懂这两种思维模式的区别,并分析它们的时空复杂度。
Dream it possible!
1 个月前
c++
·
leetcode
·
面试
·
回溯
LeetCode 面试经典 150_回溯_单词搜索(104_79_C++_中等)
给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。
长安er
1 个月前
算法
·
leetcode
·
二叉树
·
动态规划
·
回溯
LeetCode 124/543 树形DP
目录一、题目 1:二叉树中的最大路径和(LeetCode 124)1. 题目描述2. 核心思想(树形 DP)
Dream it possible!
2 个月前
c++
·
leetcode
·
面试
·
回溯
LeetCode 面试经典 150_回溯_全排列(100_46_C++_中等)
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1: 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
Dream it possible!
2 个月前
c++
·
leetcode
·
面试
·
回溯
LeetCode 面试经典 150_回溯_组合(99_77_C++_中等)
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。
长安er
2 个月前
笔记
·
算法
·
leetcode
·
回溯
·
递归
·
n皇后
LeetCode 46/51 排列型回溯题笔记-全排列 / N 皇后
目录一、题目 1:全排列(LeetCode 46)题目描述核心思路重难点 & 易错点Java 实现(标准版)
长安er
2 个月前
算法
·
leetcode
·
动态规划
·
回溯
·
打家劫舍
LeetCode198打家劫舍:从回溯到动态规划的优化历程
目录方法 1:朴素回溯(暴力递归)思路Java 实现时空复杂度问题方法 2:记忆化搜索(自顶向下 DP)
长安er
2 个月前
数据结构
·
算法
·
leetcode
·
剪枝
·
回溯
LeetCode 77/216/22组合型回溯法-组合 / 组合总和 III / 括号生成)
目录一、题目 1:组合(LeetCode 77)题目描述核心思路难点 & 重点Java 实现(带剪枝)
FAfa_C++
2 个月前
回溯
代码随想录Day25_回溯5_全排列
给了一个数组,要求给出其所有长度>=2的非递减子序列。压入结果的条件是path.size()>=2,回溯过程结束的条件是移动到了边上startIndex>=num.size() 在树中,非递减序列,要求压入的元素必须比之前压入的大:if(path.empty()||nums[i]>=path.back())