- 博客(33)
- 收藏
- 关注
原创 从根到叶的二进制数之和
给出一棵二叉树,其上每个结点的值都是 0 或 1。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。例如,如果路径为 0 -> 1 -> 1 -> 0 -> 1,那么它表示二进制数 01101,也就是 13。对树上的每一片叶子,我们都要找出从根到该叶子的路径所表示的数字。题目数据保证答案是一个 32 位 整数。树中的节点数在 [1, 1000] 范围内。Node.val 仅为 0 或 1。
2023-02-27 20:09:56 82
原创 另一棵树的子树
给你两棵二叉树 root 和 subRoot。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true;否则,返回 false。二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。subRoot 树上的节点数量范围是 [1, 1000]root 树上的节点数量范围是 [1, 2000]
2023-02-27 19:33:58 81
原创 根据二叉树创建字符串
给你二叉树的根节点 root ,请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串。空节点使用一对空括号对 "()" 表示,转化后需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。树中节点的数目范围是 [1, 104]
2023-02-18 20:33:27 126
原创 将有序数组转换为二叉搜索树
给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。来源:力扣(LeetCode)
2023-02-15 17:18:37 81
原创 对称二叉树
用两个指针分别代表根节点的左孩子和右孩子,再利用递归完成遍历。给你一个二叉树的根节点 root , 检查它是否轴对称。树中节点数目在范围 [1, 1000] 内。
2023-02-15 16:50:03 44
原创 100.相同的树
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。两棵树上的节点数目都在范围 [0, 100] 内。
2023-02-14 18:01:39 47
原创 二叉树的最大深度
给定二叉树 [3,9,20,null,null,15,7],二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。给定一个二叉树,找出其最大深度。叶子节点是指没有子节点的节点。返回它的最大深度 3。
2023-02-14 17:43:13 55
原创 N叉树的最大深度
N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。树的节点数目位于 [0, 104] 之间。给定一个 N 叉树,找到其最大深度。树的深度不会超过 1000。
2023-02-13 19:09:17 118
原创 二叉树的所有路径
树中节点的数目在范围 [1, 100] 内。给你一个二叉树的根节点 root ,按。,返回所有从根节点到叶子节点的路径。是指没有子节点的节点。
2023-02-13 17:32:31 56
原创 二叉树的直径
给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。题目要求任意两个结点路径长度中的最大值,即一个节点的左右子树深度之和的最大值。, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。两结点之间的路径长度是以它们之间边的数目表示。
2023-02-12 21:01:38 55
原创 二叉搜索树中的搜索
你需要在 BST 中找到节点值等于 val 的节点。返回以该节点为根的子树。如果节点不存在,则返回 null。给定二叉搜索树(BST)的根节点 root 和一个整数值 val。数中节点数在 [1, 5000] 范围内。root 是二叉搜索树。
2023-02-12 19:49:02 49
原创 合并二叉树
想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。给你两棵二叉树: root1 和 root2。两棵树中的节点数目在范围 [0, 2000] 内。注意: 合并过程必须从两个树的根节点开始。返回合并后的二叉树。
2023-02-11 20:51:25 149
原创 二叉搜索树的最小绝对差
给你一个二叉搜索树的根节点 root ,返回。差值是一个正数,其数值等于两值之差的绝对值。树中节点的数目范围是 [2, 104]树中任意两不同节点值之间的最小差值。
2023-02-11 16:57:04 51
原创 商品折扣后的最终价格
商店里正在进行促销活动,如果你要买第 i 件商品,那么你可以得到与 prices[j] 相等的折扣,其中 j 是满足 j > i 且 prices[j]
2023-02-06 23:52:53 85
原创 最近的请求次数
int ping(int t) 在时间 t 添加一个新请求,其中 t 表示以毫秒为单位的某个时间,并返回过去 3000 毫秒内发生的所有请求数(包括新请求)。确切地说,返回在 [t-3000, t] 内发生的请求数。写一个 RecentCounter 类来计算特定时间范围内最近的请求。RecentCounter() 初始化计数器,请求数为 0。保证 每次对 ping 的调用都使用比之前更大的 t 值。保证每次对 ping 调用所使用的 t 值都。来源:力扣(LeetCode)
2023-02-06 22:29:18 88
原创 买票需要的时间
一个人 一次只能买一张票 ,如果需要购买更多票,他必须走到 队尾 重新排队(瞬间 发生,不计时间)。如果一个人没有剩下需要买的票,那他将会 离开 队伍。给你一个下标从 0 开始的整数数组 tickets ,数组长度为 n ,其中第 i 人想要购买的票数为 tickets[i]。有 n 个人前来排队买票,其中第 0 人站在队伍 最前方 ,第 (n - 1) 人站在队伍 最后方。返回位于位置 k(下标从 0 开始)的人完成买票需要的时间(以秒为单位)。来源:力扣(LeetCode)
2023-02-05 21:58:31 149
原创 无法吃午餐的学生数量
给你两个整数数组 students 和 sandwiches ,其中 sandwiches[i] 是栈里面第 i 个三明治的类型(i = 0 是栈的顶部), students[j] 是初始队列里第 j 名学生对三明治的喜好(j = 0 是队列的最开始位置)。只要直接统计出队列中喜好圆形和方形的学生数量(sr,sq),然后去和栈顶的三明治类型比较,如果栈顶的三明治类型为圆,则sr-1(所有学生站在一个队列里,每个学生要么喜欢圆形的要么喜欢方形的。餐厅里三明治的数量与学生的数量相同。
2023-02-03 22:11:46 59
原创 用队列实现栈
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。boolean empty() 如果栈是空的,返回 true;一致,但在写pop函数时,要注意队列是先入先出,而栈是后入先出。最多调用100 次 push、pop、top 和 empty。void push(int x) 将元素 x 压入栈顶。每次调用 pop 和 top 都保证栈不为空。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。
2023-02-03 21:00:32 150
原创 用栈实现队列
你 只能 使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。假设所有操作都是有效的 (例如,一个空的队列不会调用 pop 或者 peek 操作)void push(int x) 将元素 x 推到队列的末尾。int pop() 从队列的开头移除并返回元素。int peek() 返回队列开头的元素。
2023-02-01 22:15:17 80
原创 有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。每个右括号都有一个对应的相同类型的左括号。s 仅由括号 '()[]{}' 组成。左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。
2023-01-30 21:21:16 37
原创 682.棒球比赛
ops[i] 为 "C"、"D"、"+",或者一个表示整数的字符串。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。"+" - 表示本回合新获得的得分是前两次得分的总和。"D" - 表示本回合新获得的得分是前一次得分的两倍。题目数据保证记录此操作时前面总是存在一个有效的分数。题目数据保证记录此操作时前面总是存在一个有效的分数。对于 "C" 和 "D" 操作,题目数据保证记录此操作时前面总是存在一个有效的分数。对于 "+" 操作,题目数据保证记录此操作时前面总是存在两个有效的分数。
2023-01-30 20:32:01 51
原创 234.回文链表
给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true;否则,返回 false。遍历链表,将链表的每个元素放入数组中,同时求出链表长度,再通过数组判断是否为回文数组,即可判断出该链表是否为回文链表。链表中节点数目在范围[1, 100000] 内。
2023-01-19 20:21:53 38
原创 删除排序链表中的重复元素
链表中节点数目在范围 [0, 300] 内。给定一个已排序的链表的头 head ,删除所有重复的元素,使每个元素只出现一次。题目数据保证链表已经按。
2023-01-18 14:34:08 115
原创 206.反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。链表中节点的数目范围是 [0, 5000]链表可以选用迭代或递归的方式完成。
2023-01-18 13:59:43 53
原创 合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。两个链表的节点数目范围是 [0, 50]l1 和 l2 均按 非递减顺序 排列。
2023-01-16 16:12:40 47
原创 移除链表元素
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回新的头节点。列表中的节点数目在范围 [0, 104] 内。
2023-01-16 13:01:34 68
原创 按键持续时间最长的键
LeetCode 设计了一款新式键盘,正在测试其可用性。测试人员将会点击一系列键(总计 n 个),每次一个。给你一个长度为 n 的字符串 keysPressed ,其中 keysPressed[i] 表示测试序列中第 i 个被按下的键。releaseTimes 是一个升序排列的列表,其中 releaseTimes[i] 表示松开第 i 个键的时间。字符串和数组的 下标都从 0 开始。第 0 个键在时间为 0 时被按下,接下来每个键都 恰好 在前一个键松开时被按下。
2023-01-14 23:40:14 173 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人