摘要: 分治法的基本思想:将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。递归地解这些问题,然后将各个子问题的解合并成原问题的解。 分治法所能解决的问题一般具有以下几个特征: 该问题的规模缩小到一定的程度就可以容易地解决;因为问题的计算复杂性一般是随着问题规模的增加而增加, 阅读全文
posted @ 2017-07-25 22:44 apanda009 阅读(11476) 评论(0) 推荐(0) 编辑
摘要: public class MyNode { TreeNode node; int start; int end; public MyNode(TreeNode node, int start, int end) { this.node = node; this.start = start; this 阅读全文
posted @ 2017-07-25 22:39 apanda009 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 递归出口1, 出口2(操作, 遍历(dfs), 操作), 操作, 遍历(dfs), 操作 阅读全文
posted @ 2017-07-25 18:36 apanda009 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 从任意一点dfs, 和dfs return 当前, 左节点, 右节点的模板 The basic idea is to subtract the value of current node from sum until the subtraction equals 0, then we know th 阅读全文
posted @ 2017-07-25 13:31 apanda009 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 什么时候跳过的改动 阅读全文
posted @ 2017-07-24 17:32 apanda009 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2017-07-24 17:30 apanda009 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 感悟: 1. 什么时候用排列组合问题? 看看结果有ArrayList? 所求的容器有多个结果值-且各个结果值之间只是顺序,或长度不同,但是来源(存在有显性隐性输入值)都是一样的-- 正是排列组合的根本. 数组, 字符串 2. 关键点: 递归函数里面加入容器, 结果值--操作的元素---不断地操作结果中的值, 输入值, (判断访问过没有—看是否要求重复、位置计数器)。 3. ... 阅读全文
posted @ 2017-07-24 16:31 apanda009 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 容器此处还可以用 hashMap, 其中set既可以表示里面的边又可以表示入度数, 但是此处只需要知道入度数就可以了. 之前还有用 int [] ArrayList[] 来表示的同set, 因为坐标可以表示map中的键, 容器内元素可以表示值. 阅读全文
posted @ 2017-07-23 21:36 apanda009 阅读(152) 评论(0) 推荐(0) 编辑
摘要: copy 的题多用hashmap, 难点在于如何让遍历, 如何构建新的节点间的关系. An intuitive solution is to keep a hash table for each node in the list, via which we just need to iterate 阅读全文
posted @ 2017-07-23 21:28 apanda009 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 矩阵的bfs, 套路一致,从外向内, 很easy 构造类, 遍历矩阵建立图 bfs要点在于如何建图, 是否建类, 建比较器, 建方向容器, 建走过的路的存储器(数组, 或者set, list) 如何遍历(堆不空?), 遍历到内部的点时判断是否符合题意(边界, 走过), 再考虑题意, 判断当前的点是否 阅读全文
posted @ 2017-07-23 21:06 apanda009 阅读(158) 评论(0) 推荐(0) 编辑