上一页 1 2 3 4 5 6 ··· 8 下一页
摘要: 利用双向队列 偶数层当栈用, 奇数层当队列用 阅读全文
posted @ 2019-08-16 01:30 南山南北秋悲 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 正常做bfs,然后List添加的时候,从头部开始添加add(0, ...) 阅读全文
posted @ 2019-08-16 01:25 南山南北秋悲 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 先看递归的解法 无非就是取recur(root) + recur(root孙子节点)… 和 recur(root.left) + recur(root.right)的最大值 但是递归会反复求解之前求过的值,比如求recur(root.left)时又会重新求一遍recur(root孙子节点) 这个时候 阅读全文
posted @ 2019-08-16 01:20 南山南北秋悲 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 常规思路就是走一遍dfs找出叶子节点,记录,删除叶子节点,反复直到树空,时间复杂度为o(n!) 但是,我们可以通过记录当前节点到叶子节点的距离,来完成题目要求,只需要一遍dfs,时间复杂度为o(n) 阅读全文
posted @ 2019-08-16 01:07 南山南北秋悲 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 思路很简单,存在最优子结构,用递归自上至下解即可。 如何判断当前root所代表的树是否为uni-value subtree? 1. 检查root和left,right值是否一致 2. left子树和right子树是否都为uni-value 注意第二步,可能left,right为空,写if时要注意 阅读全文
posted @ 2019-08-16 00:43 南山南北秋悲 阅读(316) 评论(0) 推荐(0) 编辑
摘要: lc132 Palindrome Pairs 2 大致与lc131相同,这里要求的是最小分割方案 同样可以分割成子问题 dp[i][j]还是表示s(i~j)是否为palindrome res[i]则用来记录s(0~i)的最小cut数 阅读全文
posted @ 2019-06-21 15:59 南山南北秋悲 阅读(119) 评论(0) 推荐(0) 编辑
摘要: lc131 Palindrome Pairs 解法1: 递归 观察题目,要求,将原字符串拆成若干子串,且这些子串本身都为Palindrome 那么挑选cut的位置就很有意思,后一次cut可以建立在前一次cut的基础上 举例来说 "aab" 第一次cut"a" "ab" 第二次cut"a" "b" 很 阅读全文
posted @ 2019-06-21 14:16 南山南北秋悲 阅读(167) 评论(0) 推荐(0) 编辑
摘要: lc 336 Palindrome Pairs 最简单的就是每两个都拼接一下,然后判断是否为回文串 时间复杂度为o(n^2*k) n:words个数 k:word平均长度 但是我们仔细观察一下,两个word拼接之后,是如何判断是否为回文串的呢?首尾指针,匹配,向中间收缩。 假如现在有一个单词"asa 阅读全文
posted @ 2019-06-21 10:33 南山南北秋悲 阅读(213) 评论(0) 推荐(0) 编辑
摘要: lc214 Shortest Palindrome 可以将问题转化成找到原字符串的最长palindrome子串(注意,子串必须以s[0]为起始) 例如:sdserf sds为最长palindrome子串 只需要将sds之后的子串翻转一下,补充到原字符串之前即可 fre + sdserf 那么如何找到 阅读全文
posted @ 2019-06-17 22:05 南山南北秋悲 阅读(160) 评论(0) 推荐(0) 编辑
摘要: lc9 Palindrome Number 题目要求在不将原int转换为string的情况下,判断该int是否为P.N. 思路很简单,从后向前,依次取个位十位、、、上的数作为最高位,次高位 怎么取? 先%10,然后/10为下次做准备 怎么放到预定位置? sum += sum*10 + 上一个问题中% 阅读全文
posted @ 2019-06-17 09:47 南山南北秋悲 阅读(127) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 8 下一页