LeetCode:Hot100python版本之回溯

LeetCode:Hot100python版本之回溯_第1张图片

回溯算法其实是纯暴力搜索。for循环嵌套是写不出的

组合:没有顺序

排列:有顺序

回溯法可以抽象为树形结构。只有在回溯算法中递归才会有返回值。

LeetCode:Hot100python版本之回溯_第2张图片

46. 全排列

排列是有顺序的。

组合类问题用startindex,排序类问题用used,来标记使用过哪些元素。

LeetCode:Hot100python版本之回溯_第3张图片

LeetCode:Hot100python版本之回溯_第4张图片

78. 子集

空在根节点里面。

子集也是一种组合问题,因为它的集合是无序的。树形结构的每个节点的结果都是我们的结果。

全局变量数组path为子集收集元素,二维数组result存放子集组合。(也可以放到递归函数参数里)

LeetCode:Hot100python版本之回溯_第5张图片

17. 电话号码的字母组合

LeetCode:Hot100python版本之回溯_第6张图片

39. 组合总和

LeetCode:Hot100python版本之回溯_第7张图片

22. 括号生成

为了检查序列是否有效,我们遍历这个序列,并使用一个变量 balance表示左括号的数量减去右括号的数量。如果在遍历过程中 balance的值小于零,或者结束时 balance 的值不为零,那么该序列就是无效的,否则它是有效的。

LeetCode:Hot100python版本之回溯_第8张图片

79. 单词搜索

LeetCode:Hot100python版本之回溯_第9张图片

​​​​​​131. 分割回文串

切割问题的回溯搜索的过程和组合问题的回溯搜索的过程是差不多的。

LeetCode:Hot100python版本之回溯_第10张图片

51. N 皇后

(困难)

你可能感兴趣的:(leetcode,leetcode,算法)