Leetcode - Word Ladder I,II

2018-08-02
阅读 8 分钟
3.9k
首先需要说明的是,这两道题代表了一种思想或者说一种思维定式对比说明了dfs vs bfs 有关效率,通用场景和局限性的优劣分析,详细见具体讲解

Leetcode - Word Search I,II

2018-07-31
阅读 4 分钟
2.1k
我的思路:1.首先得在board中寻找首元素可能出现的位置,对每个合法的开始位置进行dfs2.每次dfs的过程中,结合backtracing避免回退

Leetcode - Subsets I,II

2018-07-31
阅读 2 分钟
2.4k
这道题重定义了什么叫可行解:一般而言,可行解需要满足强约束性条件集,而本题的可行解就是单一弱约束性条件(distinct integers,只需要当前集合内的元素不重复即可算作一个可行解) ,算是比较简单的入门级dfs + backtracing 题目。

Leetcode - Permutations I,II

2018-07-31
阅读 3 分钟
1.8k
全排列问题是回溯的典型例题:1.可行解的组成形式是给定数组中的所有数的组合,故而大小上可以作为可行解判定条件2.每次需要在剩下可被选中的集合中选择一个,创建mask数组

Leetcode - N Queens

2018-07-31
阅读 2 分钟
1.6k
Leetcode - 051. N-Queens dfs + backtracing 典型题目 需要注意的地方:1.剪枝放在了下行状态的循环内部2.需要判别当前位置可否放置皇后,当前列,两条对角线都是需要考虑的 {代码...} Leetcode - 052. N-Queens II 唯一不同的地方在于:不需要存储最终的放置方案,只需要统计方案的个数,所以将所有vct替换为int ans,...

Leetcode - Combination Sum I,II,III

2018-07-31
阅读 4 分钟
2.6k
我的思路:1.排序是必要的,为什么排序是必要的?考虑到我们dfs + backtraing 的标准三步(1.优先判定可行解 2.剪枝 3.遍历下行状态,更新backtracing的追踪变量),我们如何判定是一个可行解,显然是当前sum = target,那么如果我们不排序的话当前sum > target 还有可能pop 最后一个元素然后与之后较小的元素形成可行...

Leetcode - 037. Sudoku Solver

2018-07-31
阅读 3 分钟
2k
我的思路:1.需要遍历整个解空间求得可行解,隶属 dfs + backtracing2.需要used数组记录每行,每列,每块的数字占用情况2.1 初始数组指定一部分const 的占用情况2.2 dfs的过程中会更新used,backtraing 的过程会抹去上一次的尝试3.一个隐藏的trick是dfs + backtracing在整体退出之后会回到进入之前的状态,所以退出之后b...

Leetcode - 022. Generate Parentheses

2018-07-31
阅读 1 分钟
1.4k
我的思路:1.需要所有的可行解,隶属dfs + backtraing 的大类2.每次当前状态可能的下行状态有两种可能性:2.1 能否补上'(',补上'('的条件是xl < n2.2 能否补上')',补上')'的条件是xl < xr

Leetcode - 017. Letter Combinations of a Phone Number

2018-07-31
阅读 1 分钟
1.4k
我的思路:一个字符对应多种选择,需要遍历整个状态空间才能得到所求的ans,满足 dfs + backtracing组合求解模式。1.每个char对应的可能性是确定的,map用来优化time cost2.当前解的状态应该用 & ,虽然不使用 & 在本题也可以AC,出于backtracing 优化space cost的考虑,应该使用 &3.dfs + backtring 的一般...