摘要:
原题地址分两步:1. 试探。看是否还有k个节点可以翻转2. 翻转。[]->[]->[]->[1]->[2]->[3]->[4]->[]->[]->[]->NULL |------------------| 假设要翻转这一段翻转前: ... 阅读全文
posted @ 2015-01-21 19:57
李舜阳
阅读(170)
评论(0)
推荐(0)
摘要:
原题地址转化为二维地图游走问题。比如s1="abab",s2="aab",s3="aabaabb",则有如下地图,其中"^"表示开始位置,"$"表示终止位置。 a a b a ^ . . b . . . a . . . b .... 阅读全文
posted @ 2015-01-21 16:31
李舜阳
阅读(204)
评论(0)
推荐(0)
摘要:
原题地址中序遍历二叉搜索树,正常情况下所有元素都应该按递增排列,如果有元素被交换,则会出现前面元素大于后面的情况,称作反序。由于交换了两个节点,所以通常会有两处反序,但如果是两个相邻节点发生了交换,则只会有一次反序。注意,如果有两次反序,前面那次一定是较大数,后面那次一定是较小数交换的时候注意只需要... 阅读全文
posted @ 2015-01-21 15:24
李舜阳
阅读(177)
评论(0)
推荐(0)
摘要:
原题地址转化为求非重路径数问题,用动态规划求解,这种方法还挺常见的举个例子,S="aabb",T="ab"。构造如下地图("."表示空位,"^"表示起点,"$"表示终点),我们的目标就是求从起点到终点一共有多少条路径。 a ba ^ .a . .b . .b . $ 对于任意一个位... 阅读全文
posted @ 2015-01-21 14:47
李舜阳
阅读(123)
评论(0)
推荐(0)
摘要:
原题地址二叉树的层次遍历。对于每一层,依次把各节点连起来即可。代码: 1 void connect(TreeLinkNode *root) { 2 if (!root) return; 3 4 queue parents; 5 6 parents.push(root); 7 wh... 阅读全文
posted @ 2015-01-21 14:03
李舜阳
阅读(334)
评论(0)
推荐(0)
摘要:
原题地址最直观的想法就是划分成两个子问题,每个子问题变成了:求在某个范围内交易一次的最大利润在只能交易一次的情况下,如何求一段时间内的最大利润?其实就是找股价最低的一天买进,然后在股价最高的一天卖出,当然,卖股票要在买股票之后。用迭代法求这个问题非常容易,令profits[i]表示截至到第i天的最大... 阅读全文
posted @ 2015-01-21 13:08
李舜阳
阅读(889)
评论(0)
推荐(0)
摘要:
原题地址假设我们找到了一个最优路径,那么该路径上一定存在一个节点,左边的路径是它的左儿子,右边的路径是它的右儿子。所以,只需要在遍历二叉树求路径的同时更新最大值即可。maxPath = max{只保留左边路径,只保留右边路径,同时保留左右两边路径,左右两边路径都不保留(只有节点本身)},对应第8行无... 阅读全文
posted @ 2015-01-21 12:00
李舜阳
阅读(379)
评论(0)
推荐(0)
摘要:
原题地址既然是求最短路径,可以考虑动归或广搜。这道题对字典直接进行动归是不现实的,因为字典里的单词非常多。只能选择广搜了。思路也非常直观,从start或end开始,不断加入所有可到达的单词,直到最终到达另一端。本质上广度优先遍历图。需要注意的是,拓展下一个单词时不能对字典进行枚举,因为字典里的单词太... 阅读全文
posted @ 2015-01-21 11:23
李舜阳
阅读(1460)
评论(0)
推荐(0)

浙公网安备 33010602011771号