
leetcode
文章平均质量分 56
从第一题开始刷,自己写,每一题都会发布
会有黎明吗
我相信一开始命运是掌握在上帝手中的,但后来有了我们,便有了Inversion of control。
展开
-
Leetcode 162.寻找峰值
峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。你可以假设。你必须实现时间复杂度为O(log n)的算法来解决此问题。示例 1:输入:nums =[1,2,3,1]输出:2解释:3 是峰值元素,你的函数应该返回其索引 2。示例 2:输入:nums =输出:1 或 5解释:你的函数可以返回索引 1,其峰值元素为 2;或者返回索引 5, 其峰值元素为 6。i。原创 2024-09-26 09:25:49 · 345 阅读 · 0 评论 -
Leetcode 106. 从中序与后序遍历序列构造二叉树
}* }*/// 中序遍历是左中右,后序遍历是左右中,使用递归,用左右坐标来分割两个数组,每个小数组都是一个小树// 左右中,这是后序树的数组,那么这个子数组的最后一个元素一定是这个子树的根节点,然后中序序列里找// 左中右,找到中,就可以分割开左右子树,迭代分割,直到最小子树,无法分割// 最后一个必是根节点// 得到根节点坐标break;// 只有中序遍历知道左右子树的信息是不够的,还需要让后续遍历知道。原创 2024-09-24 12:19:34 · 363 阅读 · 0 评论 -
Leetcode 416. 分割等和子集(Medium)
给你一个的数组nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。true数组可以分割成 [1, 5, 5] 和 [11]。false数组不能分割成两个元素和相等的子集。原创 2024-09-20 14:38:18 · 348 阅读 · 0 评论 -
Leetcode 118.杨辉三角
给定一个非负整数 numRows生成「杨辉三角」的前 numRows行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例 1:输入: numRows = 5输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2:输入: numRows = 1输出: [[1]]原创 2024-09-18 11:23:33 · 332 阅读 · 0 评论 -
Leetcode 128.最长连续序列(Medium)
解释:最长数字连续序列是 [1, 2, 3, 4]。,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。输入:nums = [0,3,7,2,5,8,4,6,0,1]输入:nums = [100,4,200,1,3,2]请你设计并实现时间复杂度为。给定一个未排序的整数数组。原创 2024-09-18 09:27:57 · 204 阅读 · 0 评论 -
Leetcode 144. 二叉树的前序遍历(Easy)
给你二叉树的根节点root,返回它节点值的遍历。原创 2024-09-18 00:15:17 · 418 阅读 · 0 评论 -
Leetcode 133. 克隆图(Medium)
给你无向图中一个节点的引用,请你返回该图的(克隆)。图中的每个节点都包含它的值valint) 和其邻居的列表(list[Node]简单起见,每个节点的值都和它的索引相同。例如,第一个节点值为 1(val = 1),第二个节点值为 2(val = 2),以此类推。该图在测试用例中使用邻接列表表示。是用于表示有限图的无序列表的集合。每个列表都描述了图中节点的邻居集。给定节点将始终是图中的第一个节点(值为 1)。你必须将作为对克隆图的引用返回。图中有 4 个节点。原创 2024-09-16 14:57:04 · 575 阅读 · 0 评论 -
Leetcode 160. 相交链表(Easy)
思路:相交的话,100%最后一个节点一定是相交的,所以他们最大开始相交的位置也就是lengthA-lengthB的绝对值,那么就直接让较长的那一个链表前进(lengthA-lengthB的绝对值)步,然后两个节点还是一起遍历,判断结点是否相同,相同就return节点,如果没有相同的最后就会返回null。换句话说,它们在内存中指向两个不同的位置,而链表 A 和链表 B 中值为 8 的节点 (A 中第三个节点,B 中第四个节点) 在内存中指向相同的位置。在 B 中,相交节点前有 1 个节点。原创 2024-09-15 14:42:24 · 979 阅读 · 0 评论 -
Leetcode 165. 比较版本号(Medium)
给你两个version1和version2,请你比较它们。版本号由被点'.'分开的修订号组成。是它并忽略前导零。比较版本号时,请按依次比较它们的修订号。如果其中一个版本字符串的修订号较少,则将缺失的修订号视为0。-110-1version1 的第二个修订号为 "2",version2 的第二个修订号为 "10":2 < 10,所以 version1 < version2。0忽略前导零,"01" 和 "001" 都代表相同的整数 "1"。0。原创 2024-09-15 14:35:33 · 479 阅读 · 0 评论 -
Leetcode 116.填充每个节点的下一个右侧节点指针(Medium)
给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:int val;Node *left;Node *next;填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为NULL。初始状态下,所有 next 指针都被设置为NULL。示例 1:输入:root = [1,2,3,4,5,6,7]输出:[1,#,2,3,#,4,5,6,7,#]原创 2024-09-12 09:06:26 · 515 阅读 · 0 评论 -
Leetcode 109.有序链表转换二叉搜索树(Medium)
给定一个单链表的头节点head,其中的元素 按升序排序 ,将其转换为 平衡 二叉搜索树。示例 1:输入: head = [-10,-3,0,5,9]输出: [0,-3,9,-10,null,5]解释: 一个可能的答案是[0,-3,9,-10,null,5],它表示所示的高度平衡的二叉搜索树。示例 2:输入: head = []输出: []head。原创 2024-09-11 09:36:34 · 506 阅读 · 0 评论 -
Leetcode 141.环形链表(Easy)
给你一个链表的头节点head,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。pos。仅仅是为了标识链表的实际情况。如果链表中存在环,则返回true。否则,返回false。true链表中有一个环,其尾部连接到第二个节点。true链表中有一个环,其尾部连接到第一个节点。false链表中没有环。-1。原创 2024-09-11 00:21:16 · 332 阅读 · 0 评论 -
Leetcode 153. 寻找旋转排序数组中的最小值(Medium)
已知一个长度为n的数组,预先按照升序排列,经由1到n次后,得到输入数组。例如,原数组47注意,数组的结果为数组。给你一个元素值的数组nums,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的。你必须设计一个时间复杂度为O(log n)的算法解决此问题。1原数组为 [1,2,3,4,5] ,旋转 3 次得到输入数组。0原数组为 [0,1,2,4,5,6,7] ,旋转 3 次得到输入数组。11原数组为 [11,13,15,17] ,旋转 4 次得到输入数组。原创 2024-09-08 14:13:24 · 499 阅读 · 0 评论 -
Leetcode 152. 乘积最大子数组(Medium)
/ 当前数值// 最大值// 回退坐标值i++) {// 说明是负数或0,就记录一下while(!return max;原创 2024-09-07 11:15:13 · 303 阅读 · 0 评论 -
Leetcode 146. LRU 缓存(Medium)
/ 题目中需要创建一个HashMap来存储参数,因为题目要求复杂度为O(1),顺序就需要通过双向链表的节点实现// 构造双向链表节点int key;int value;Node prev;Node next;// 由于LRU,是最近使用,所以为了将使用后的节点放到最前面,还需要一个头尾节点。// 容量大小// 现在的大小// get算使用,头插入// 查不到就实现节点的删除,然后头插入// 再头部插入。原创 2024-09-02 09:23:49 · 1026 阅读 · 0 评论 -
Leetcode 130. 被围绕的区域 (Medium)
给你一个m x n的矩阵board,由若干字符'X'和'O'组成,所有'O''X'board'X'通过将输入矩阵board中的所有'O'替换为'X'来。在上图中,底部的区域没有被捕获,因为它在 board 的边缘并且不能被围绕。原创 2024-08-25 13:32:47 · 460 阅读 · 0 评论 -
Leetcode 129. 求根节点到叶节点数字之和 (Medium)
因此,数字总和 = 495 + 491 + 40 =因此,数字总和 = 12 + 13 =,树中每个节点都存放有一个。计算从根节点到叶节点生成的。给你一个二叉树的根节点。是指没有子节点的节点。原创 2024-08-23 16:48:50 · 341 阅读 · 0 评论 -
leetcode力扣第二题
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { //进一位的意思,用它来表示进位,设为0很细节,因为第一位计算的时候是没有进位的,直接设成0就好原创 2023-10-14 20:41:53 · 70 阅读 · 0 评论 -
leetcode第三题
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。原创 2023-10-15 15:22:32 · 100 阅读 · 1 评论 -
Leetcode 122. 买卖股票的最佳时机 II (Medium)
给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候只能持有股票。你也可以先购买,然后在出售。返回你能获得的利润。7在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。原创 2024-08-07 17:43:05 · 353 阅读 · 0 评论 -
Leetcode 99. 恢复二叉搜索树(Medium)
就是找到两个要交换的节点 进行交换,交换的节点在他的上下文中必然是错误的,什么意思呢,就是破坏了二叉搜索树的性质,左小,右大。把这个二叉树用中序遍历抽象成链表,应该是从小到大递增的,找出两个故障的节点,然后进行交换。怎么找出来呢,就和链表一样,使用连续的前后两个节点,正常情况是前后,可以进行交换,然后一直交换到最后结束。或者也可以给他标识起来,前节点总是固定的,和冒泡排序类似,后节点就一直变,等最后进行一次交换就OK了。给你二叉搜索树的根节点root,该树中的两个节点的值被错误地交换。原创 2024-08-13 22:33:09 · 211 阅读 · 0 评论 -
Leetcode 131. 分割回文串 (Medium)
/ 本题100%是需要遍历的,双指针,当尾指针遍历到不属于回文串时,也应该继续遍历,直到到字符串的末尾比如aab不属于字符串但后面可能是aabbaa// 面对不同分支则使用递归+回溯+深拷贝解决return;i++) {// 回溯操作 分支操作// 如果左右字符不相等,则不是回文// 移动指针left++;right--;// 如果循环结束都没有返回false,则是回文。原创 2024-08-21 13:50:15 · 190 阅读 · 0 评论 -
Leetcode 105. 从前序与中序遍历序列构造二叉树 (Medium)
}* }*/// 思路就是前序遍历是先遍历根节点再遍历左右子树 而中序是左根右的顺序// preorder = [3,9,20,15,7], inorder = [9,3,15,20,7],拿这个举例子,先看前序3是根节点然后去中序里找3,// 然后3以前全是左子树 递归或循环解题 (一切只当不重复时才成立 恰好题中已给信息)// 前序遍历的第一个节点是根节点// 在中序遍历中找到根节点的位置break;原创 2024-08-20 23:55:24 · 264 阅读 · 0 评论 -
Leetcode 113. 路径总和 II(Medium)
思路: 就是一道典型的深度优先遍历,基本模型就是递归调用左右子树,这道题只需要多考虑一个问题,传递的队列存储问题,因为队列是引用的,就需要进行深拷贝在进行存储,拿示例一举例,当当前节点是11的时候,再向右子树走,满足题目条件(为叶子节点且满足target值),成功后进行add,但是该传递队列是引用的,为了避免后续修改对已经成功的影响,就进行拷贝后存储,然后每次遍历节点结束后,都应该把该节点也就是最后一个节点拿出去,保证顺序。路径总和等于给定目标和的路径。是指没有子节点的节点。原创 2024-08-14 15:56:32 · 363 阅读 · 0 评论 -
Leetcode 98. 验证二叉搜索树 (Medium)
给你一个二叉树的根节点root,判断其是否是一个有效的二叉搜索树。子树truefalse根节点的值是 5 ,但是右子节点的值是 4。[1, 104]原创 2024-08-11 11:30:19 · 469 阅读 · 0 评论 -
Leetcode 120. 三角形最小路径和(Medium)
自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。简单做 当成一个简单的动态规划 在原数据结构上进行修改。也就是说,如果正位于当前行的下标。每一步只能移动到下一行中相邻的结点上。,那么下一步可以移动到下一行的下标。,找出自顶向下的最小路径和。原创 2024-08-09 21:30:33 · 147 阅读 · 0 评论 -
Leetcode 123. 买卖股票的最佳时机 III (Hard)
给定一个数组,它的第i个元素是一支给定的股票在第i天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成交易。你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。6在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能获得利润 = 3-0 = 3。随后,在第 7 天(股票价格 = 1)的时候买入,在第 8 天 (股票价格 = 4)的时候卖出,这笔交易所能获得利润 = 4-1 = 3。4。原创 2024-08-08 12:38:17 · 322 阅读 · 0 评论 -
Leetcode 103. 二叉树的锯齿形层序遍历(Medium)
给你二叉树的根节点root,返回其节点值的。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。root = [1][[1]]root = [][][0, 2000]思路:这道题主要使用了两种方法,第一种就是正常层级遍历,但是要做一下手脚,使用两次层级遍历,第一次是先左子树再右子树的遍历方法,第二次是先右子树再左子树的遍历方法,然后根据奇偶,分别插入一半的数据。原创 2024-08-06 23:59:48 · 417 阅读 · 1 评论 -
LeetCode 107. 二叉树的层序遍历 II(Medium)
给你二叉树的根节点root,返回其节点值。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)root = [1][[1]]root = [][][0, 2000]原创 2024-08-05 15:52:39 · 334 阅读 · 0 评论 -
Leetcode 169题 多数元素(Easy)
有两种方法,一个是牺牲内存换取速度,一个是牺牲速度换取内存 ,一种用快排取中间值,一个是计数器。尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。你可以假设数组是非空的,并且给定的数组总是存在多数元素。,返回其中的多数元素。多数元素是指在数组中出现次数。原创 2024-07-31 11:03:12 · 271 阅读 · 0 评论 -
Leetcode151题(medium)
中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。反转后的字符串中不能存在前导空格和尾随空格。中使用至少一个空格将字符串中的。之间用单个空格连接的结果字符串。是由非空格字符组成的字符串。原创 2024-07-30 15:54:44 · 169 阅读 · 0 评论 -
Leetcode 682题 棒球比赛(Easy)
你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。比赛开始时,记录是空白的。你会得到一个记录操作的字符串列表ops,其中ops[i]是你需要记录的第i项操作,opsxx"+""D""C"请你返回记录中所有得分的总和。30"5" - 记录加 5 ,记录现在是 [5]"2" - 记录加 2 ,记录现在是 [5, 2]"C" - 使前一次得分的记录无效并将其移除,记录现在是 [5].原创 2024-07-29 21:29:02 · 347 阅读 · 0 评论 -
leetcode 68题 hard
【代码】leetcode 68题 hard。原创 2024-07-26 13:25:55 · 161 阅读 · 0 评论 -
leetcode 力扣第86题 分隔链表
leetcode 力扣第86题 分隔链表 给你一个链表的头节点head和一个特定值x,请你对链表进行分隔,使得所有小于x的节点都出现在大于或等于x的节点之前。你应当保留两个分区中每个节点的初始相对位置。 总体思路就是遍历用两个游标就是指针,一个backup用来插入剔除的元素,result用来遍历顺便剔除元素原创 2023-11-18 20:05:40 · 124 阅读 · 2 评论 -
leetcode力扣48题 旋转图像
leetcode力扣48题 旋转图像给定一个n×n的二维矩阵matrix表示一个图像。请你将图像顺时针旋转 90 度。你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。原创 2023-11-06 19:38:57 · 99 阅读 · 0 评论