LeetCode刷题
文章平均质量分 53
悄敲敲
这个作者很懒,什么都没留下…
展开
-
【中等】53. 最大子数组和
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6。原创 2024-01-25 11:36:53 · 382 阅读 · 1 评论 -
【中等】238. 除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。请 不要使用除法,且在 O(n) 时间复杂度内完成此题。原创 2024-01-25 10:25:41 · 352 阅读 · 0 评论 -
【简单】226. 翻转二叉树
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。示例 1:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]示例 2:输入:root = [2,1,3]输出:[2,3,1]示例 3:输入:root = []输出:[]提示:树中节点数目范围在 [0, 100] 内。原创 2024-01-09 14:50:21 · 385 阅读 · 0 评论 -
【困难】42. 接雨水
42. 接雨水给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。原创 2024-01-09 14:45:11 · 705 阅读 · 0 评论 -
【简单】104. 二叉树的最大深度
给定一个二叉树 root ,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。示例 1:输入:root = [3,9,20,null,null,15,7]输出:3示例 2:输入:root = [1,null,2]输出:2。原创 2024-01-08 21:53:22 · 362 阅读 · 0 评论 -
【中等】102. 二叉树的层序遍历
给你二叉树的根节点 root ,返回其节点值的 层序遍历。(即逐层地,从左到右访问所有节点)。示例 1:输入:root = [3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]示例 2:输入:root = [1]输出:[[1]]示例 3:输入:root = []输出:[]提示:树中节点数目在范围 [0, 2000] 内。原创 2024-01-08 10:39:55 · 386 阅读 · 0 评论 -
【TODO】【简单】94. 二叉树的中序遍历
给定一个二叉树的根节点 root ,返回 它的 中序 遍历。示例 1:输入:root = [1,null,2,3]输出:[1,3,2]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]提示:树中节点数目在范围 [0, 100] 内。原创 2023-12-21 20:38:48 · 388 阅读 · 0 评论 -
【中等】56. 合并区间
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi]。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。原创 2023-12-19 23:29:29 · 412 阅读 · 0 评论 -
【中等】54. 螺旋矩阵
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。原创 2023-12-17 15:43:12 · 439 阅读 · 0 评论 -
【中等】73. 矩阵置零
给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0。请使用 原地 算法。原创 2023-12-16 22:21:33 · 518 阅读 · 0 评论 -
【中等】24. 两两交换链表中的节点
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例 1:输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:输入:head = []输出:[]示例 3:输入:head = [1]输出:[1]提示:链表中节点的数目在范围 [0, 100] 内。原创 2023-12-15 16:51:16 · 365 阅读 · 0 评论 -
【中等】19. 删除链表的倒数第 N 个结点
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]提示:链表中结点的数目为 sz。原创 2023-12-14 15:50:48 · 346 阅读 · 0 评论 -
【中等】2. 两数相加
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。原创 2023-12-14 11:52:58 · 479 阅读 · 0 评论 -
【中等】142. 环形链表 II
给定一个链表的头节点 head ,返回链表开始入环的第一个节点。如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改 链表。示例 1:输入:head = [3,2,0,-4], pos = 1。原创 2023-12-14 11:07:51 · 366 阅读 · 0 评论 -
【简单】21. 合并两个有序链表(递归)
看到简单题我重拳出击!原创 2023-12-13 11:48:13 · 389 阅读 · 0 评论 -
【简单】141. 环形链表
给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回 true。否则,返回 false。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。原创 2023-12-12 10:24:05 · 336 阅读 · 0 评论 -
【简单】206. 反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]提示:链表中节点的数目范围是 [0, 5000]进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?原创 2023-11-13 10:32:56 · 74 阅读 · 0 评论 -
【简单】160. 相交链表
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null。原创 2023-11-07 10:29:21 · 72 阅读 · 0 评论 -
【中等】560. 和为 K 的子数组
给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数。子数组是数组中元素的连续非空序列。原创 2023-11-07 10:14:24 · 97 阅读 · 0 评论 -
11. 盛最多水的容器【中等】
给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。原创 2023-05-25 15:19:45 · 891 阅读 · 0 评论 -
283. 移动零【简单】
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。示例 1:输入: nums = [0,1,0,3,12]输出: [1,3,12,0,0]示例 2:输入: nums = [0]输出: [0]原创 2023-05-24 23:50:47 · 73 阅读 · 0 评论 -
128. 最长连续序列【中等】
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。示例 1:输入:nums = [100,4,200,1,3,2]输出:4解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。示例 2:输入:nums = [0,3,7,2,5,8,4,6,0,1]输出:9。原创 2023-05-24 20:23:04 · 745 阅读 · 0 评论 -
26. 删除有序数组中的重复项【简单】
给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致。然后返回 nums 中唯一元素的个数。考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。返回 k。原创 2023-05-20 00:28:24 · 353 阅读 · 0 评论 -
49. 字母异位词分组【中等】
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。示例 1:输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]示例 2:输入: strs = [“”]输出: [[“”]]示例 3:输入: strs = [“a”]原创 2023-05-18 16:46:12 · 546 阅读 · 0 评论 -
1. 两数之和【简单】
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。原创 2023-05-18 14:52:12 · 550 阅读 · 0 评论 -
27. 移除元素【简单】
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。示例 1:输入:nums = [3,2,2,3], val = 3。原创 2023-05-16 10:50:42 · 266 阅读 · 0 评论 -
88. 合并两个有序数组【简单】
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n。原创 2023-05-16 09:34:35 · 325 阅读 · 0 评论 -
70. 爬楼梯【简单】
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?输入:n = 2输出:2解释:有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶输入:n = 3输出:3解释:有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶提示:1 <= n <= 45easy思维:class Solution { private int count = 0;原创 2022-03-30 11:27:32 · 88 阅读 · 0 评论 -
141. 环形链表【简单】
题目给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回 true 。 否则,返回 false 。自解/** * Definition for singly-linked list. * class ListNo原创 2022-02-19 17:50:02 · 422 阅读 · 0 评论 -
4. 寻找两个正序数组的中位数【困难】
题目给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。提示: ~~~~ nums1.length == m ~~~~ nums2.length == n &nbs原创 2022-02-19 11:04:52 · 534 阅读 · 0 评论 -
557. 反转字符串中的单词 III【简单】
MarkString[] str = s.split(" ");直接分割成字符串数组。字符串可变语言:C/C++, Ruby, PHP, Swift字符串不可变语言:Java, Python, C#, Javascript, GoJava可以利用String与StringBuffer之间的转换做到类似可变效果。在判断条件里应该避免出现循环中的变量。逻辑上可能没问题,在循环中发生变化,会导致意外的情况出现。提前将其算出常量,赋值,作为判断边缘。题目给定一个字符串 s ,你需要反转原创 2022-02-18 20:09:45 · 204 阅读 · 0 评论 -
189. 轮转数组【中等】
随想难顶哦,明明记得408备考时候做过类似的题,看来当时想的还是太简单了,真正调试起来很多地方都没有考虑到,比如k大于数组长度之类。还得真敲。没有头绪的一题,看评论还说是面试常见题。深码。题目给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。提示:1 <= nums.length <= 105-231 <= nums[i] <= 231 - 10 <= k <= 105进阶:尽可能想出更多的解决方案,至少有 三种 不同的方法可以解决原创 2022-02-16 17:05:54 · 121 阅读 · 0 评论 -
21. 合并两个有序链表【简单】
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]输入:l1 = [], l2 = []输出:[]输入:l1 = [], l2 = [0]输出:[0]提示: ~~~~ 两个链表的节点数目范围是 [0, 50] &nbs原创 2022-02-15 18:35:46 · 161 阅读 · 0 评论 -
20. 有效的括号【简单】
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。提示: ~~~~ 1 <= s.length <= 104 ~~~~ s 仅由括号 ‘()[]{}’ 组成输入:s原创 2022-02-14 22:10:20 · 349 阅读 · 0 评论 -
3. 无重复字符的最长子串【中等】
学二者取大数Java自带start = Math.max(start, last[index] + 1);题目给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。提示: ~~~~ 0 <= s.length <= 5 * 104 ~~~~ s 由英文字母、数字、符号和空格组成输原创 2022-01-27 18:55:22 · 178 阅读 · 0 评论 -
19. 删除链表的倒数第 N 个结点【中等】
先按照要删除的节点在中间考虑;其次测试特殊情况时考虑删除的是第一个节点的情况。和876. 链表的中间结点【简单】很像,仍然是双指针一前一后根据题目要求到达指定位置而后进行操作。此两双指针,换汤不换药。题目给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。提示: ~~~~ 链表中结点的数目为 sz ~~~~ &n原创 2022-01-21 15:14:40 · 202 阅读 · 0 评论 -
876. 链表的中间结点【简单】
给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。提示: ~~~~ 给定链表的结点数介于 1 和 100 之间。输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.va原创 2022-01-21 14:37:22 · 84 阅读 · 0 评论 -
344. 反转字符串【简单】
学发现评论里有人提出不用使用额外的变量。交换a与b只需a = a + b;b = a - b;确实蛮巧妙,但是总觉得并没有少占用CPU,编译成汇编语言后并不见得会好。但是我也分析不太清楚。再有看到有使用位运算的,是真厉害。s[i] ^= s[j];s[j] ^= s[i];s[i] ^= s[j];顺便学到了Java字符串操作的一些方法。题目编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1)原创 2022-01-20 22:10:57 · 182 阅读 · 0 评论 -
167. 两数之和 II - 输入有序数组【简单】
学返回数组值直接return new int[]{low + 1, high + 1};简化了语句。题目给定一个已按照 非递减顺序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。你可以假设每个输入 只对应唯一的答原创 2022-01-20 21:13:17 · 491 阅读 · 0 评论 -
283. 移动零【简单】
思没有测试调试,啥也不会;初次写成,漏洞百出。这可如何是好。应当注意此种判断条件,如果下标越界会产生数组越界或者空指针访问。第二次遇到类似问题。提前加入判断。while(zeroFlag < nums.length && nums[zeroFlag] != 0)题目给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。输入: [0,1,0,3,12]输出: [1原创 2022-01-20 15:28:58 · 557 阅读 · 0 评论