力扣
力扣代码
yitahutu79
小李今天打代码了吗?
展开
-
42. 接雨水
解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输入:height = [4,2,0,3,2,5]原创 2022-11-21 19:21:40 · 259 阅读 · 0 评论 -
1014. 最佳观光组合
一对景点(i < j)组成的观光组合的得分为 values[i] + values[j] + i - j ,也就是景点的评分之和 减去 它们两者之间的距离。给你一个正整数数组 values,其中 values[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的 距离 为 j - i。返回一对观光景点能取得的最高分。原创 2022-11-21 19:08:07 · 146 阅读 · 0 评论 -
1299. 将每个元素替换为右侧最大元素
给你一个数组 arr ,请你将每个元素用它右边最大的元素替换,如果是最后一个元素,用 -1 替换。完成所有替换操作后,请你返回这个数组。原创 2022-11-21 18:32:53 · 112 阅读 · 0 评论 -
740. 删除并获得点数
每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除 所有 等于 nums[i] - 1 和 nums[i] + 1 的元素。开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。给你一个整数数组 nums ,你可以对它进行一些操作。转载 2022-11-21 16:33:57 · 123 阅读 · 0 评论 -
198. 打家劫舍
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。原创 2022-11-21 16:10:59 · 123 阅读 · 0 评论 -
1791. 找出星型图的中心节点
给你一个二维整数数组 edges ,其中 edges[i] = [ui, vi] 表示在节点 ui 和 vi 之间存在一条边。请你找出并返回 edges 所表示星型图的中心节点。有一个无向的 星型 图,由 n 个编号从 1 到 n 的节点组成。星型图有一个 中心 节点,并且恰有 n - 1 条边将中心节点与其他每个节点连接起来。题目数据给出的 edges 表示一个有效的星型图。原创 2022-11-17 18:41:25 · 168 阅读 · 0 评论 -
剑指 Offer II 059. 数据流的第 K 大数值
设计一个找到数据流中第 k 大元素的类(class)。注意是排序后的第 k 大元素,不是第 k 个不同的元素。KthLargest(int k, int[] nums) 使用整数 k 和整数流 nums 初始化对象。int add(int val) 将 val 插入数据流 nums 后,返回当前数据流中第 k 大的元素。题目数据保证,在查找第 k 大元素时,数组中至少有 k 个元素。最多调用 add 方法 104 次。原创 2022-11-17 18:36:22 · 117 阅读 · 0 评论 -
160. 相交链表
评测系统将根据这些输入创建链式数据结构,并将两个头节点 headA 和 headB 传递给你的程序。给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果 listA 和 listB 有交点,intersectVal == listA[skipA] == listB[skipB]如果不存在相交节点,这一值为 0。skipA - 在 listA 中(从头节点开始)跳到交叉节点的节点数。skipB - 在 listB 中(从头节点开始)跳到交叉节点的节点数。原创 2022-11-17 18:18:14 · 210 阅读 · 0 评论 -
732. 我的日程安排表 III
给你一些日程安排 [start, end) ,请你在每个日程安排添加后,返回一个整数 k ,表示所有先前日程安排会产生的最大 k 次预订。int book(int start, int end) 返回一个整数 k ,表示日历中存在的 k 次预订的最大值。当 k 个日程安排有一些时间上的交叉时(例如 k 个日程安排都在同一时间内),就会产生 k 次预订。实现一个 MyCalendarThree 类来存放你的日程安排,你可以一直添加新的日程安排。每个测试用例,调用 book 函数最多不超过 400次。原创 2022-11-17 17:09:18 · 150 阅读 · 0 评论 -
剑指 Offer II 056. 二叉搜索树中两个节点之和
给定一个二叉搜索树的 根节点 root 和一个整数 k , 请判断该二叉搜索树中是否存在两个节点它们的值之和等于 k。假设二叉搜索树中节点的值均唯一。二叉树的节点个数的范围是 [1, 104].root 为二叉搜索树。原创 2022-11-17 16:43:34 · 113 阅读 · 0 评论 -
剑指 Offer II 055. 二叉搜索树迭代器
BSTIterator(TreeNode root) 初始化 BSTIterator 类的一个对象。指针应初始化为一个不存在于 BST 中的数字,且该数字小于 BST 中的任何元素。可以假设 next() 调用总是有效的,也就是说,当调用 next() 时,BST 的中序遍历中至少存在一个下一个数字。注意,指针初始化为一个不存在于 BST 中的数字,所以对 next() 的首次调用将返回 BST 中的最小元素。否则返回 false。int next()将指针向右移动,然后返回指针处的数字。原创 2022-11-17 16:37:19 · 105 阅读 · 0 评论 -
144. 二叉树的前序遍历
给你二叉树的根节点 root ,返回它节点值的 前序 遍历。树中节点数目在范围 [0, 100] 内。原创 2022-11-17 18:42:31 · 126 阅读 · 0 评论 -
剑指 Offer 55 - I. 二叉树的深度
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。节点总数原创 2022-11-17 18:42:21 · 124 阅读 · 0 评论 -
938. 二叉搜索树的范围和
给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。树中节点数目在范围 [1, 2 * 104] 内。所有 Node.val 互不相同。原创 2022-11-16 21:53:45 · 99 阅读 · 0 评论 -
237. 删除链表中的节点
对于输入,你应该提供整个链表 head 和要给出的节点 node。node 不应该是链表的最后一个节点,而应该是链表中的一个实际节点。链表的所有值都是 唯一的,并且保证给定的节点 node 不是链表中的最后一个节点。有一个单链表的 head,我们想删除它其中的一个节点 node。需要删除的节点 node 是 链表中的节点 ,且 不是末尾节点。我们将构建链表,并将节点传递给你的函数。给定节点的值不应该存在于链表中。输出将是调用你函数后的整个链表。链表中每个节点的值都是 唯一 的。链表中的节点数应该减少 1。原创 2022-11-16 21:04:20 · 122 阅读 · 0 评论 -
1290. 二进制链表转整数
给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。请你返回该链表所表示数字的 十进制值。每个结点的值不是 0 就是 1。链表的结点总数不超过 30。原创 2022-11-16 20:59:28 · 150 阅读 · 0 评论 -
剑指 Offer II 042. 最近请求次数
int ping(int t) 在时间 t 添加一个新请求,其中 t 表示以毫秒为单位的某个时间,并返回过去 3000 毫秒内发生的所有请求数(包括新请求)。确切地说,返回在 [t-3000, t] 内发生的请求数。写一个 RecentCounter 类来计算特定时间范围内最近的请求。RecentCounter() 初始化计数器,请求数为 0。保证 每次对 ping 的调用都使用比之前更大的 t 值。保证每次对 ping 调用所使用的 t 值都 严格递增。至多调用 ping 方法 104 次。原创 2022-11-16 20:53:45 · 101 阅读 · 0 评论 -
617. 合并二叉树
想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。给你两棵二叉树: root1 和 root2。两棵树中的节点数目在范围 [0, 2000] 内。注意: 合并过程必须从两个树的根节点开始。返回合并后的二叉树。原创 2022-11-14 20:34:28 · 79 阅读 · 0 评论 -
226. 翻转二叉树
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。树中节点数目范围在 [0, 100] 内。原创 2022-11-14 19:36:25 · 86 阅读 · 0 评论 -
897. 递增顺序搜索树
给你一棵二叉搜索树的 root ,请你 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。树中节点数的取值范围是 [1, 100]原创 2022-11-14 19:31:11 · 101 阅读 · 0 评论 -
47. 全排列 II
给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。原创 2022-11-14 18:09:51 · 139 阅读 · 0 评论 -
1971. 寻找图中是否存在路径
有一个具有 n 个顶点的 双向 图,其中每个顶点标记从 0 到 n - 1(包含 0 和 n - 1)。图中的边用一个二维整数数组 edges 表示,其中 edges[i] = [ui, vi] 表示顶点 ui 和顶点 vi 之间的双向边。每个顶点对由 最多一条 边连接,并且没有顶点存在与自身相连的边。给你数组 edges 和整数 n、source 和 destination,如果从 source 到 destination 存在 有效路径 ,则返回 true,否则返回 false。原创 2022-11-09 22:36:14 · 214 阅读 · 0 评论 -
700. 二叉搜索树中的搜索
你需要在 BST 中找到节点值等于 val 的节点。返回以该节点为根的子树。如果节点不存在,则返回 null。给定二叉搜索树(BST)的根节点 root 和一个整数值 val。数中节点数在 [1, 5000] 范围内。root 是二叉搜索树。原创 2022-11-07 19:15:36 · 83 阅读 · 0 评论 -
349. 两个数组的交集
给定两个数组 nums1 和 nums2 ,返回 它们的交集。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序。输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输入:nums1 = [1,2,2,1], nums2 = [2,2]解释:[4,9] 也是可通过的。原创 2022-11-07 19:09:21 · 123 阅读 · 0 评论 -
409. 最长回文串
但在发现了第一个出现次数为奇数的字符后,我们将 ans 增加 1,这样 ans 变为奇数,在后面发现其它出现奇数次的字符时,我们就不改变 ans 的值了。例如在字符串 “abba” 中,回文中心是 “ab|ba” 中竖线的位置,而在字符串 “abcba” 中,回文中心是 “ab©ba” 中的字符 “c” 本身。对于每个字符 ch,假设它出现了 v 次,我们可以使用该字符 v / 2 * 2 次,在回文串的左侧和右侧分别放置 v / 2 个字符 ch,其中 / 为整数除法。原创 2022-11-07 18:02:17 · 74 阅读 · 0 评论 -
671. 二叉树中第二小的节点
给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个。更正式地说,即 root.val = min(root.left.val, root.right.val) 总成立。对于树中每个节点 root.val == min(root.left.val, root.right.val)给出这样的一个二叉树,你需要输出所有节点中的 第二小的值。如果第二小的值不存在的话,输出 -1。原创 2022-10-31 19:13:06 · 77 阅读 · 0 评论 -
1790. 仅执行一次字符串交换能否使两个字符串相等
给你长度相等的两个字符串 s1 和 s2。一次 字符串交换 操作的步骤如下:选出某个字符串中的两个下标(不必不同),并交换这两个下标所对应的字符。如果对 其中一个字符串 执行 最多一次字符串交换 就可以使两个字符串相等,返回 true;否则,返回 false。s1 和 s2 仅由小写英文字母组成。原创 2022-10-18 22:14:02 · 113 阅读 · 0 评论 -
15. 三数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。你返回所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。原创 2022-10-17 20:13:14 · 82 阅读 · 0 评论 -
11. 盛最多水的容器
给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。原创 2022-10-17 19:24:20 · 143 阅读 · 0 评论 -
剑指 Offer 39. 数组中出现次数超过一半的数字
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。1原创 2022-10-17 18:45:07 · 82 阅读 · 0 评论 -
102. 二叉树的层序遍历
给你二叉树的根节点 root ,返回其节点值的 层序遍历。(即逐层地,从左到右访问所有节点)。树中节点数目在范围 [0, 2000] 内。原创 2022-10-17 15:42:57 · 82 阅读 · 0 评论 -
100. 相同的树
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。两棵树上的节点数目都在范围 [0, 100] 内。原创 2022-10-17 15:06:30 · 109 阅读 · 0 评论 -
98. 验证二叉搜索树
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。所有左子树和右子树自身必须也是二叉搜索树。节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。树中节点数目范围在[1, 104] 内。原创 2022-10-17 15:01:49 · 99 阅读 · 0 评论 -
LCP 67. 装饰树
在一个 父节点 x 与其左子节点 y 之间添加 -1 节点, 节点 -1、节点 y 为各自父节点的左子节点,在一个 父节点 x 与其右子节点 y 之间添加 -1 节点, 节点 -1、节点 y 为各自父节点的右子节点,若一个节点拥有父节点,则在该节点和他的父节点之间插入一个灯饰(即插入一个值为 -1 的节点)。0原创 2022-10-17 14:48:17 · 105 阅读 · 0 评论 -
94. 二叉树的中序遍历
给定一个二叉树的根节点 root ,返回 它的 中序 遍历。树中节点数目在范围 [0, 100] 内。原创 2022-10-17 14:34:33 · 76 阅读 · 0 评论 -
7. 整数反转
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。假设环境不允许存储 64 位整数(有符号或无符号)。原创 2022-10-15 21:22:27 · 93 阅读 · 0 评论 -
1614. 括号的最大嵌套深度
例如:“”、“()()”、“()(()())” 都是 有效括号字符串(嵌套深度分别为 0、1、2),而 “)(” 、“(()” 都不是 有效括号字符串。depth(A + B) = max(depth(A), depth(B)),其中 A 和 B 都是 有效括号字符串。depth(“(” + A + “)”) = 1 + depth(A),其中 A 是一个 有效括号字符串。字符串是一个空字符串 “”,或者是一个不为 “(” 或 “)” 的单字符。题目数据保证括号表达式 s 是 有效的括号表达式。原创 2022-10-14 17:21:30 · 121 阅读 · 0 评论 -
2169. 得到 0 的操作数
例如,num1 = 5 且 num2 = 4 ,应该用 num1 减 num2 ,因此,得到 num1 = 1 和 num2 = 4。然而,如果 num1 = 4且 num2 = 5 ,一步操作后,得到 num1 = 4 和 num2 = 1。每一步 操作 中,如果 num1 >= num2 ,你必须用 num1 减 num2;否则,你必须用 num2 减 num1。返回使 num1 = 0 或 num2 = 0 的 操作数。给你两个 非负 整数 num1 和 num2。原创 2022-10-14 17:14:02 · 140 阅读 · 0 评论 -
1688. 比赛中的配对次数
如果当前队伍数为 奇数 ,那么将会随机轮空并晋级一支队伍,其余的队伍配对。总共进行 (n - 1) / 2 场比赛,且产生 (n - 1) / 2 + 1 支队伍进入下一轮。如果当前队伍数是 偶数 ,那么每支队伍都会与另一支队伍配对。总共进行 n / 2 场比赛,且产生 n / 2 支队伍进入下一轮。给你一个整数 n ,表示比赛中的队伍数。返回在比赛中进行的配对次数,直到决出获胜队伍为止。原创 2022-10-14 17:06:37 · 80 阅读 · 0 评论 -
剑指 Offer 64. 求1+2+…+n
n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?原创 2022-10-14 17:02:10 · 102 阅读 · 0 评论