会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
进阶之路
首页
新随笔
管理
2014年8月27日
#
44. Decode Ways && Gray Code
摘要: 思想: 动态规划,分析: 12121212: 前面为1 或者 (前面是2 且 当前值 1。
阅读全文
posted @ 2014-08-27 20:49 进阶之路
阅读(166)
评论(0)
推荐(0)
43. Merge Sorted Array && LRU Cache
摘要: 思想:因为 A 很大, 所以从最大值开始插入, 即从 A 的 m+n 位置开始插入数据。避免了冗余的移动。 思想: 1. 由于要 O(1) 时间确定某 key 是不是在 Cache 中,所以用 Hash_map (), 从而能够O(1)找到结点地址,返回对应的 value。 2. 由于要 O(1) 时间插入、删除某项, 所以各项之间的存储不能用单链表(删除时要O(n)查找前面的结点),不能用顺序表(插入、删除都 O(n)), 故存储使用双链表。 综上分析,查找、插入、删除都是 O(1)时间。(代码尚可优化)
阅读全文
posted @ 2014-08-27 20:12 进阶之路
阅读(148)
评论(0)
推荐(0)
42. Subsets && Subsets II
摘要: 思想: 顺序读,取前面的每个子集,把该位置数放后面作为新的子集。 思想: 排序后,按照 1 的方法。但是若前面的数字与本数字相同,则只读取含有前面数字的每个子集,把自身放在后面作为一个新的子集。
阅读全文
posted @ 2014-08-27 19:49 进阶之路
阅读(189)
评论(0)
推荐(0)
41. Unique Binary Search Trees && Unique Binary Search Trees II
摘要: 思路: f(n) = Σi=1n f(n-i)*f(i-1), 其中 f(0) = f(1) = 1; 利用动归记下之前的 f(2)~f(n-1)即可。 思路:分别以 1~n 为根节点,左右子树根的集合数量相乘,递归,依次得出结果。
阅读全文
posted @ 2014-08-27 19:39 进阶之路
阅读(259)
评论(0)
推荐(0)
40. Interleaving String
摘要: 思想: 动态规划。 DP[i][j] = (DP[i-1][j] && s1[i-1] == s3[i+j-1]) || (DP[i][j-1] && s2[j-1] == s3[i+j-1]); 其中,i, j 分别为字符串 s1, s2 的当前长度。 方法二: 进一步优化,空间复杂度, O(min(s1.size(), s2.size()));
阅读全文
posted @ 2014-08-27 19:24 进阶之路
阅读(182)
评论(0)
推荐(0)
39. Recover Binary Search Tree && Validate Binary Search Tree
摘要: 思想: Morris traversal. Solution 1 : Preorder traversal Solution 2: Inorder traversal. Solution 3: Morris Traversal.
阅读全文
posted @ 2014-08-27 19:16 进阶之路
阅读(178)
评论(0)
推荐(0)
38. Same Tree && Symmetric Tree
摘要: 思想: 构造其镜像树。
阅读全文
posted @ 2014-08-27 19:04 进阶之路
阅读(126)
评论(0)
推荐(0)
37. Binary Tree Zigzag Level Order Traversal && Binary Tree Inorder Traversal
摘要: 思路: 使用两个队列(一个可以顺序读,所以用vector模拟),每个队列放一层结点。 题解: 两种方法: 1. 使用栈: O(n) Time, O(n) Space。 2. Morris traversal (构造线索树), O(n) Time, O(1) Space.
阅读全文
posted @ 2014-08-27 18:49 进阶之路
阅读(188)
评论(0)
推荐(0)
36. Construct Binary Tree from Inorder and Postorder Traversal && Construct Binary Tree from Preorder and Inorder Traversal
摘要: 思想: 迭代。 说明: 这类问题,要求一个提供根节点,然后另一个序列(中序序列)可依据根节点分出左右子树。
阅读全文
posted @ 2014-08-27 18:09 进阶之路
阅读(206)
评论(0)
推荐(0)
35. Binary Tree Level Order Traversal && Binary Tree Level Order Traversal II
摘要: 思想: 若递归,传入层号。若迭代,使用队列,在每层结束时,加入一个标记。 思想: 目前用两种方法:1 同上,最后将结果反转一下。 2.先求出最大层数,再层序遍历。(也许还有更好的方法)
阅读全文
posted @ 2014-08-27 18:02 进阶之路
阅读(149)
评论(0)
推荐(0)
34. Convert Sorted List to Binary Search Tree && Convert Sorted Array to Binary Search Tree
摘要: 思想: 以中间点为根节点,按先序顺序来创建 。
阅读全文
posted @ 2014-08-27 17:11 进阶之路
阅读(114)
评论(0)
推荐(0)
33. Minimum Depth of Binary Tree && Balanced Binary Tree && Maximum Depth of Binary Tree
摘要: 思想:先序遍历。注意的是: 当只有一个孩子结点时,深度是此孩子结点深度加 1 . 思想: 先序遍历。既要返回左右子树判断的结果,又要返回左右子树的深度进行再判断。 所以要么返回一个 pair, 要么函数参数增加一个引用来传递返回值。
阅读全文
posted @ 2014-08-27 17:00 进阶之路
阅读(185)
评论(0)
推荐(0)
32. Path Sum && Path Sum II
摘要: 思想: 先序遍历。若当前结点为空,返回 false; 不为空,则加上其值,若为叶子结点,则判断一次。 注意: 非路径和, 而是到叶子结点的路径和。例如: {1, 2} 1 返回: false 思路同上: 只是要记下路径。
阅读全文
posted @ 2014-08-27 16:21 进阶之路
阅读(205)
评论(0)
推荐(0)
31. Flatten Binary Tree to Linked List
摘要: 思想: 如 Hints.
阅读全文
posted @ 2014-08-27 15:54 进阶之路
阅读(132)
评论(0)
推荐(0)
30. Distinct Subsequences
摘要: 思想:动态规划。 D[i][j] = D[i][j-1] + (T[i-1] == S[j-1] ? D[i-1][j-1] : 0); 改进后:空间复杂度 O(T.size()).
阅读全文
posted @ 2014-08-27 15:29 进阶之路
阅读(188)
评论(0)
推荐(0)
29. Populating Next Right Pointers in Each Node && Populating Next Right Pointers in Each Node II
摘要: 思想: 常量空间要求,决定了不能使用递归。满二叉树,简单循环,每次修改一层即可。 思想同上: 但是下一层最开始结点和连接过程中链表的第一个结点不易确定,所以需要设定两个变量来保存。
阅读全文
posted @ 2014-08-27 15:08 进阶之路
阅读(143)
评论(0)
推荐(0)
28. Triangle && Pascal's Triangle && Pascal's Triangle II
摘要: 思想: 简单动态规划。
阅读全文
posted @ 2014-08-27 14:55 进阶之路
阅读(203)
评论(0)
推荐(0)
27. Best Time to Buy and Sell Stock && Best Time to Buy and Sell Stock II && Best Time to Buy and Sell Stock III
摘要: 注意: 限制条件: 先买后卖(不同天)。 思想: 买了后,1. 若以后价格不变,不买不卖。 1. 更价格低,重新买。2. 价格升高,假定抛售,更新一下利润值。 思想:求出所有非递减序列两端绝对值之和。我贴在 leedcode 的代码和证明: 思想:动态规划。 记录下从各位置(含)开始之前的最大利润和此时开始到最后的最大利润。
阅读全文
posted @ 2014-08-27 14:38 进阶之路
阅读(196)
评论(0)
推荐(0)
26. Binary Tree Maximum Path Sum
摘要: 思想: 后序遍历。注意路径的连通: 结点不为空时要返回 max( max(leftV, rightV)+rootV, rootV);
阅读全文
posted @ 2014-08-27 12:25 进阶之路
阅读(113)
评论(0)
推荐(0)
25. Valid Palindrome
摘要: 思想:简单的从两端来逐个读字符,判断是否相等。(36ms)
阅读全文
posted @ 2014-08-27 01:08 进阶之路
阅读(139)
评论(0)
推荐(0)
博客园
© 2004-2025
浙公网安备 33010602011771号
浙ICP备2021040463号-3