摘要:【参考链接】 93. 复原 IP 地址 【注意】 1.切割问题就可以使用回溯搜索法把所有可能性搜出来。 2.startIndex一定是需要的,因为不能重复分割,记录下一层递归分割的起始位置。 3.本题我们还需要一个变量pointNum,记录添加逗点的数量。 4.分割的段数作为终止条件。pointNu
阅读全文
摘要:【参考链接】 39. 组合总和 【注意】 1.candidates 中的数字可以无限制重复被选取。 2.在for循环中进行剪枝。剪枝前需要对数组进行排序。 【代码】 1 class Solution(object): 2 def __init__(self): 3 self.path = [] 4
阅读全文
摘要:【参考连接】 216. 组合总和 III 【注意】 1.组合不强调元素之间的顺序。 【代码】 1 class Solution(object): 2 def __init__(self): 3 self.res = [] 4 self.sum_now = 0 5 self.path = [] 6 d
阅读全文
摘要:【参考链接】 1.属于纯暴力算法 2.能解决组合、切割、子集、排列(强调元素的顺序)、棋盘问题(n皇后,解数独)问题。 3.一般都可以抽象成一个n叉树问题。横方向是for(遍历集合元素,主体:处理节点,递归,回溯(撤销处理节点的情况)),纵方向是递归(一般没有返回值,终止条件是收集结果的时候)。 4
阅读全文
摘要:[参考链接] 669. 修剪二叉搜索树 需要递归修剪。 [代码] 1 # Definition for a binary tree node. 2 # class TreeNode(object): 3 # def __init__(self, val=0, left=None, right=Non
阅读全文
摘要:[参考链接] 235. 二叉搜索树的最近公共祖先 [注意] 1.因为是有序树,所以如果中间节点是 q 和 p 的公共祖先,那么中间节点的数组 一定是在[p, q]区间的。即中节点 > p && 中节点 < q 或者 中节点 > q && 中节点 < p。 2.那么只要从上到下去遍历,遇到 cur节点
阅读全文