随笔分类 - leetcode
leetcode刷题
摘要:题目解析 题目意思很简单,就是给你一个二叉树,然后告诉你每个节点都是有位置信息的,即每个节点可以用(x,y)来表示。然后节点位置信息为(x,y)的节点的左节点位置为(x+1,y-1),右节点位置为(x+1,y+1)。并且根节点的位置信息统一为(0,0) 现在你需要像扫描表格一样,从上往下,从左往右的
阅读全文
摘要:暴力匹配就不说了,说说KMP。 KMP算法思想: 第一步:根据模式串(needle)得出next数组。 第二步:匹配主串,但在匹配主串时,遇到冲突位置时,不是立即和暴力匹配一样直接从头匹配。而是查看next数组,得到一个回退位置,从此处再开始匹配。 重复第二步,直至匹配成功或者匹配失败。 next数
阅读全文
摘要:题目意思就是说判断s1能否经过题目所说的算法得到s2。 题目中的算法处理的位置为随机,所以复现算法基本无法得到s2 那么只能搜索了。 分析: 初始时:如果s1==s2,直接返回true。 对于一个字符串s1,在随机位置分割s1,那么我们只能遍历s1,假设当前位置为分割处,然后进行后续操作,来判断是否
阅读全文
摘要:这个题主要解法和1是一样的,都是动态规划,建立一个2xn的二维数组,一行表示偷,一行表示不偷。 递推公式: i号房子偷,那么i-1号房子必不能偷,i号房子不偷,则当前最大金额值为偷到i-1号房子时偷和不偷的最大值 当前房子选择偷:dp[1][i] = dp[0][i-1] 当前房子不偷:dp[0][
阅读全文
摘要:前序遍历 + 中序遍历 = 可复原树 后序遍历 + 中序遍历 = 可复原树 前序遍历 + 后序遍历 = 不可 分析: 前序遍历第一个值即为根节点,但是无法知道左子树有几个节点,也就确定不了左右子树 中序遍历如果能知道根节点,就能知道左子树、右子树各自节点数。 组合两者,由前序得到根节点,再由中序判别
阅读全文
摘要:前缀树又称字典树,每颗节点结构与一般树有一点不同。 一般树节点 struct TreeNode { valueType val; vector<TreeNode*> next;//个数不固定,个数代表一个节点有多少个子节点 } 本题前缀树节点 struct TrieNode { bool isEnd
阅读全文
摘要:PS:(感觉这题名字和内容有歧义) 要求得到任意不同节点值之间的最小差值。 本身二叉树是有序的,又找最小差值,其实就是相当于在一个有序数组中找到每相邻两数之间最小差值。 朴素思想: 中序遍历树,把值都塞到数组里,然后遍历数组,得到最小差值。 改良: 中序遍历树时,依次得到的数已经是有序的,只需在遍历
阅读全文
摘要:简单说 就是将数组里的几个数拼起来,组合成最大的数 分析: 实际上就是要排个序,然后组合起来返回 一说排序,就想到std::sort 关键是怎么比? 其实要获得最大数,这个最大的数进行to_string得到的字典序也会是最大的! 这么一来就很好办了,就把两数的to_string结果正反相加,比较最大
阅读全文
摘要:一开始乍一看题,首先就想到了之前做的一个求质数的题,采用的过滤的方式,将已经确定的质数,排除掉这些质数的倍数值。 再仔细一看题给的输入,发现给的不是范围值,就只好想其他办法。 朴素的想法是遍历每个数,判断是否是丑数,是,++count;直到count==n为止。结果就是运行超时。 朴素的想法是遍历每
阅读全文

浙公网安备 33010602011771号