
刷题
文章平均质量分 56
Allen_Xu17
这个作者很懒,什么都没留下…
展开
-
刷题---树篇---606. 根据二叉树创建字符串
606. 根据二叉树创建字符串你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。空节点则用一对空括号 "()" 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。示例 1:输入: 二叉树: [1,2,3,4] 1 / \ 2 3 / 4 输出: "1(2(4))(3)"解释: 原本将是“1(2(4)())(3())”,在你省略所有不必要的空括号对之后,它将是...原创 2020-07-19 22:06:44 · 304 阅读 · 0 评论 -
刷题---树篇---129. 求根到叶子节点数字之和
129. 求根到叶子节点数字之和给定一个二叉树,它的每个结点都存放一个0-9的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明:叶子节点是指没有子节点的节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 25解释:从根到叶子节点路径 1->2 代表数字 12.从根到叶子节点路径 1->3 代表数字 13.因此,...原创 2020-07-18 22:19:27 · 348 阅读 · 0 评论 -
刷题--程序员面试金典--面试题 04.12. 求和路径(重点)
面试题 04.12. 求和路径给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负)。设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量。注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下(只能从父节点指向子节点方向)。示例:给定如下二叉树,以及目标和sum = 22, 5 / \ 4 8 / / \ 11 13 4 ...原创 2020-07-09 17:37:17 · 366 阅读 · 0 评论 -
刷题--程序员面试金典--面试题 04.10. 检查子树(重点)(go)
面试题 04.10. 检查子树检查子树。你有两棵非常大的二叉树:T1,有几万个节点;T2,有几万个节点。设计一个算法,判断 T2 是否为 T1 的子树。如果 T1 有这么一个节点 n,其子树与 T2 一模一样,则 T2 为 T1 的子树,也就是说,从节点 n 处把树砍断,得到的树与 T2 完全相同。示例1:输入:t1 = [1, 2, 3], t2 = [2]输出:true示例2:输入:t1 = [1, null, 2, 4], t2 = [3, 2]输出:false提示...原创 2020-06-30 11:25:50 · 275 阅读 · 0 评论 -
刷题--程序员面试金典--面试题 04.09. 二叉搜索树序列(重点)(go)
面试题 04.09. 二叉搜索树序列从左向右遍历一个数组,通过不断将其中的元素插入树中可以逐步地生成一棵二叉搜索树。给定一个由不同节点组成的二叉树,输出所有可能生成此树的数组。示例:给定如下二叉树 2 / \ 1 3返回:[ [2,1,3], [2,3,1]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/bst-sequences-lcci著作权归领扣网络所有。商业转...原创 2020-06-30 11:05:09 · 393 阅读 · 0 评论 -
刷题--程序员面试金典--面试题 04.08. 首个共同祖先(重点)(go)
面试题 04.08. 首个共同祖先设计并实现一个算法,找出二叉树中某两个节点的第一个共同祖先。不得将其他的节点存储在另外的数据结构中。注意:这不一定是二叉搜索树。例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4] 3 / \ 5 1/ \ / \6 2 0 8 / \7 4示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出: 3...原创 2020-06-29 20:42:40 · 269 阅读 · 0 评论 -
刷题--程序员面试金典--面试题 04.06. 后继者(go)
面试题 04.06. 后继者设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。如果指定节点没有对应的“下一个”节点,则返回null。示例 1:输入: root = [2,1,3], p = 1 2/ \1 3输出: 2示例 2:输入: root = [5,3,6,2,4,null,null,1], p = 6 5 / \ 3 6 / \ 2 4/ 1输出: null来源:力扣(...原创 2020-06-29 19:57:03 · 309 阅读 · 0 评论 -
刷题--程序员面试金典--面试题 04.05. 合法二叉搜索树(go)
面试题 04.05. 合法二叉搜索树实现一个函数,检查一棵二叉树是否为二叉搜索树。示例1:输入: 2 / \ 1 3输出: true示例2:输入: 5 / \ 1 4 / \ 3 6输出: false解释: 输入为: [5,1,4,null,null,3,6]。 根节点的值为 5 ,但是其右子节点值为 4 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/proble...原创 2020-06-29 07:50:26 · 294 阅读 · 0 评论 -
刷题--程序员面试金典--面试题 04.04. 检查平衡性(go)
面试题 04.04. 检查平衡性实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4] 1 / \ 2 2 / \ 3 3/ \4 4返回...原创 2020-06-28 20:30:36 · 238 阅读 · 0 评论 -
刷题--程序员面试金典--面试题 04.03. 特定深度节点链表(go)
面试题 04.03. 特定深度节点链表给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表)。返回一个包含所有深度的链表的数组。示例:输入:[1,2,3,4,5,null,7,8] 1 / \ 2 3 / \ \ 4 5 7 / 8输出:[[1],[2,3],[4,5,7],[8]]来源:力扣(LeetCode)链接:h...原创 2020-06-28 17:11:57 · 206 阅读 · 0 评论 -
刷题--程序员面试金典--面试题 04.02. 最小高度树(go)
面试题 04.02. 最小高度树给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5来源:力扣(LeetCode)链接:https://leetcode-cn.co...原创 2020-06-28 12:14:07 · 382 阅读 · 0 评论 -
刷题---树篇---113. 路径总和 II
113. 路径总和 II给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明:叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回:[ [5,4,...原创 2020-06-27 10:13:40 · 224 阅读 · 0 评论 -
刷题---树篇---112. 路径总和
112. 路径总和给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明:叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1返回 tru...原创 2020-06-26 22:02:02 · 214 阅读 · 0 评论 -
刷题--程序员面试金典--面试题 02.08. 环路检测(go)
面试题 02.08. 环路检测给定一个有环链表,实现一个算法返回环路的开头节点。有环链表的定义:在链表中某个节点的next元素指向在它前面出现过的节点,则表明该链表存在环路。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:tail connects to node index 0解释:原创 2020-06-24 16:24:54 · 207 阅读 · 0 评论 -
刷题--程序员面试金典--面试题 02.07. 链表相交(重点)(go)
面试题 02.07. 链表相交给定两个(单向)链表,判定它们是否相交并返回交点。请注意相交的定义基于节点的引用,而不是基于节点的值。换句话说,如果一个链表的第k个节点与另一个链表的第j个节点是同一节点(引用完全相同),则这两个链表相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8原创 2020-06-23 21:27:06 · 357 阅读 · 0 评论 -
刷题--程序员面试金典--面试题 02.06. 回文链表(重点)(go)
面试题 02.06. 回文链表编写一个函数,检查输入的链表是否是回文的。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/palindrome-linked-list-lcci著作权归领扣网络所有。商业转载请联系官方授...原创 2020-06-23 18:38:39 · 224 阅读 · 0 评论 -
刷题--程序员面试金典篇
程序员面试金典的算法题解原创 2020-06-23 11:43:25 · 406 阅读 · 0 评论 -
刷题--程序员面试金典--面试题 02.05. 链表求和(重点)(go)
面试题 02.05. 链表求和给定两个用链表表示的整数,每个节点包含一个数位。这些数位是反向存放的,也就是个位排在链表首部。编写函数对这两个整数求和,并用链表形式返回结果。示例:输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295输出:2 -> 1 -> 9,即912进阶:假设这些数位是正向存放的,请再做一遍。示例:输入:(6 -> 1 -> 7) + (2 -> 9 -> 5.原创 2020-06-23 11:42:05 · 285 阅读 · 0 评论 -
刷题--程序员面试金典--面试题 02.04. 分割链表
面试题 02.04. 分割链表编写程序以 x 为基准分割链表,使得所有小于 x 的节点排在大于或等于 x 的节点之前。如果链表中包含 x,x 只需出现在小于 x 的元素之后(如下所示)。分割元素 x 只需处于“右半部分”即可,其不需要被置于左右两部分之间。示例:输入: head = 3->5->8->5->10->2->1, x = 5输出: 3->1->2->10->5->5->8来源:力扣(LeetCode)链接原创 2020-06-23 11:25:22 · 223 阅读 · 0 评论 -
刷题--程序员面试金典--面试题 02.03. 删除中间节点(重点)(go)
面试题 02.03. 删除中间节点实现一种算法,删除单向链表中间的某个节点(即不是第一个或最后一个节点),假定你只能访问该节点。示例:输入:单向链表a->b->c->d->e->f中的节点c结果:不返回任何数据,但该链表变为a->b->d->e->f方法一:func deleteNode(node *ListNode) { *node = *node.Next }方法二;func deleteNod.原创 2020-06-22 23:07:58 · 274 阅读 · 0 评论 -
刷题--程序员面试金典--面试题 02.01. 移除重复节点(go)
面试题 02.01. 移除重复节点编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1:输入:[1, 2, 3, 3, 2, 1]输出:[1, 2, 3]示例2:输入:[1, 1, 1, 1, 2]输出:[1, 2]提示:链表长度在[0, 20000]范围内。链表元素在[0, 20000]范围内。进阶:如果不得使用临时缓冲区,该怎么解决?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/rem...原创 2020-06-22 22:31:34 · 298 阅读 · 0 评论 -
刷题--程序员面试金典--面试题 01.09. 字符串轮转(go)
面试题 01.09. 字符串轮转字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。示例1:输入:s1 = "waterbottle", s2 = "erbottlewat"输出:True示例2:输入:s1 = "aa", s2 = "aba"输出:False提示:字符串长度在[0, 100000]范围内。说明:你能只调用一次检查子串的方法吗?来源:力扣(LeetCod...原创 2020-06-22 13:08:48 · 251 阅读 · 0 评论 -
刷题--程序员面试金典--面试题 01.08. 零矩阵(go)
面试题 01.08. 零矩阵编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。示例 1:输入:[ [1,1,1], [1,0,1], [1,1,1]]输出:[ [1,0,1], [0,0,0], [1,0,1]]示例 2:输入:[ [0,1,2,0], [3,4,5,2], [1,3,1,5]]输出:[ [0,0,0,0], [0,4,5,0], [0,3,1,0]]来源:力扣(LeetCod...原创 2020-06-22 12:31:13 · 339 阅读 · 0 评论 -
刷题--程序员面试金典--面试题 01.07. 旋转矩阵 (重点)(go)
面试题 01.07. 旋转矩阵给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。不占用额外内存空间能否做到?示例 1:给定 matrix =[ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]]示例 2:给定 matrix =[ [ 5, 1, 9,11], [ 2, 4, 8,10]...原创 2020-06-20 13:27:57 · 276 阅读 · 0 评论 -
刷题--程序员面试金典--面试题 01.06. 字符串压缩(go)
面试题 01.06. 字符串压缩字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。示例1:输入:"aabcccccaaa"输出:"a2b1c5a3"示例2:输入:"abbccd"输出:"abbccd"解释:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。提示:字符串长度...原创 2020-06-20 11:10:37 · 387 阅读 · 0 评论 -
刷题--程序员面试金典--面试题 01.05. 一次编辑(最小编辑距离)(重点)(go)
面试题 01.05. 一次编辑字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。示例1:输入:first = "pale"second = "ple"输出: True示例2:输入:first = "pales"second = "pal"输出: False来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/one-aw...原创 2020-06-19 11:37:30 · 334 阅读 · 0 评论 -
刷题--程序员面试金典--面试题 01.04. 回文排列(go)
面试题 01.04. 回文排列给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。示例1:输入:"tactcoa"输出:true(排列有"tacocat"、"atcocta",等等)来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/palindrome-permutation-lcci著作权归领扣网络所有。商业转载请.原创 2020-06-19 10:13:22 · 252 阅读 · 0 评论 -
刷题---树篇---111. 二叉树的最小深度(go)
111. 二叉树的最小深度给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-depth-of-binary-tree...原创 2020-06-18 09:29:51 · 305 阅读 · 0 评论 -
刷题--程序员面试金典--面试题 01.03. URL化(go)
面试题 01.03. URL化URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)示例1:输入:"Mr John Smith ", 13输出:"Mr%20John%20Smith"示例2:输入:" ", 5输出:"%20%20%20%20%20"提示:字符串长度在[0, 500000]范围内。...原创 2020-06-18 09:02:08 · 299 阅读 · 0 评论 -
刷题--程序员面试金典--面试题 01.02. 判定是否互为字符重排(go)
面试题 01.02. 判定是否互为字符重排给定两个字符串s1和s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。示例 1:输入: s1 = "abc", s2 = "bca"输出: true 示例 2:输入: s1 = "abc", s2 = "bad"输出: false说明:0 <= len(s1) <= 100 0 <= len(s2) <= 100思路:先判断len(s1) 是否等于len(s2...原创 2020-06-18 08:27:37 · 283 阅读 · 0 评论 -
刷题--程序员面试金典--面试题 01.01. 判定字符是否唯一(go)
面试题 01.01. 判定字符是否唯一实现一个算法,确定一个字符串 s 的所有字符是否全都不同。示例 1:输入: s = "leetcode"输出: false示例 2:输入: s = "abc"输出: true限制:0 <= len(s) <= 100如果你不使用额外的数据结构,会很加分。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/is-unique-lcci著作权归领扣网络所有。商业转载请联系官.原创 2020-06-18 08:15:43 · 260 阅读 · 1 评论 -
刷题---树篇---563. 二叉树的坡度(go,python实现)
563. 二叉树的坡度给定一个二叉树,计算整个树的坡度。一个树的节点的坡度定义即为,该节点左子树的结点之和和右子树结点之和的差的绝对值。空结点的的坡度是0。整个树的坡度就是其所有节点的坡度之和。示例:输入: 1 / \ 2 3输出: 1解释:结点的坡度 2 : 0结点的坡度 3 : 0结点的坡度 1 : |2-3| = 1树的坡度 : 0 + 0 + 1 = 1注意:任何子树的结点的和不会超过32位整数的范围。...原创 2020-06-16 17:34:50 · 217 阅读 · 0 评论 -
刷题---树篇---404. 左叶子之和(go,python实现)
404. 左叶子之和计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sum-of-left-leaves著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思路:本题有递归和迭代两种方法:迭代版本,利用层序遍历,每次遍历到左...原创 2020-06-16 16:21:08 · 177 阅读 · 0 评论 -
刷题---链表篇---61. 旋转链表(python,go语言实现)
61. 旋转链表给定一个链表,旋转链表,将链表每个节点向右移动k个位置,其中k是非负数。示例1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5->1->2->3->NULL示例2:输入: 0->1...原创 2020-06-15 12:12:38 · 262 阅读 · 0 评论 -
刷题---树篇---559. N叉树的最大深度(go,python实现)
559. N叉树的最大深度给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。例如,给定一个3叉树:我们应返回其最大深度,3。说明:树的深度不会超过1000。树的节点总不会超过5000。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-depth-of-n-ary-tree著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。_...原创 2020-06-15 10:56:41 · 415 阅读 · 0 评论 -
刷题---树篇---110. 平衡二叉树(go,python实现)
110. 平衡二叉树给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4] 1 / \ 2 2 / \...原创 2020-06-15 10:13:57 · 256 阅读 · 0 评论 -
刷题---树篇---530. 二叉搜索树的最小绝对差
530. 二叉搜索树的最小绝对差给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。示例:输入: 1 \ 3 / 2输出:1解释:最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。提示:树中至少有 2 个节点。本题与 783 https://leetcode-cn.com/problems/minimum-distance-between-bst-nodes/ 相同...原创 2020-06-14 10:34:38 · 315 阅读 · 0 评论 -
刷题---链表篇---92. 反转链表 II
92. 反转链表 II反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤m≤n≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-linked-list-ii著作权归领扣网络所有。商业转载请联...原创 2020-06-13 21:37:58 · 202 阅读 · 0 评论 -
刷题---树篇---513. 找树左下角的值
513. 找树左下角的值给定一个二叉树,在树的最后一行找到最左边的值。示例 1:输入: 2 / \ 1 3输出:1示例 2:输入: 1 / \ 2 3 / / \ 4 5 6 / 7输出:7注意: 您可以假设树(即给定的根节点)不为 NULL。来源:力扣(LeetCode)链接:https://leetcode-cn.com/pro...原创 2020-06-13 17:42:15 · 289 阅读 · 0 评论 -
刷题---树篇---106. 从中序与后序遍历序列构造二叉树
106. 从中序与后序遍历序列构造二叉树根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder =[9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/construct-binary-tr...原创 2020-06-13 17:11:36 · 221 阅读 · 0 评论