LeetCode刷题集合
文章平均质量分 55
LeetCode
逍遥自在”
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
leetcode64题 最小路径和 动态规划和深搜
文章目录题目描述深搜解法动态规划解法题目描述给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例 1:输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径 1→3→1→1→1 的总和最小。示例 2:输入:grid = [[1,2,3],[4,5,6]]输出:12提示:m == grid.lengthn == grid[i].lengt原创 2022-04-12 11:14:47 · 484 阅读 · 0 评论 -
LeetCoed热题 HOT 汇总
简单难度:第1题 两数之和第20题 有效的括号第21题 合并两个有序链表第53题 最大子序和第70题 爬楼梯(动态规划)第101题 对称二叉树第104题 树的最大深度第121题 买卖股票的最佳时机(动态规划)第136题 只出现一次的数字第141题 环形链表的判断第155题 最小栈(包含min函数的栈)第160题 相交链表第169题 超过数组一半的元素第206题 反转链表第226题 翻转二叉树第234题 回文链表第283题 移动零第448 找到所有数组中消失的数字第46原创 2021-07-20 17:16:42 · 221 阅读 · 0 评论 -
LeetCode第49题 字母异位词分组
文章目录问题描述:解题思路:代码实现:问题描述:给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"]输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]说明:所有输入均为小写字母。不考虑答案输出的顺序。解题思路: 由于互为字母异位词的两个字符串包含的字母相同,因此对两个字符串分原创 2021-02-26 09:54:30 · 226 阅读 · 1 评论 -
LeetCode第48题 旋转图像
文章目录问题描述:解题思路:代码实现:问题描述:给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 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],[13,3,6,7],原创 2021-02-24 10:52:28 · 241 阅读 · 0 评论 -
LeetCode第39题 组合总和(深搜)
文章目录问题描述:解题思路:代码实现:问题描述:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[ [7], [2,2,3]]示例 2:输入:c原创 2021-02-22 12:45:55 · 381 阅读 · 0 评论 -
LeetCode第34题 在排序数组中查找元素开始和结束的位置
文章目录问题描述:解题思路:代码实现:问题描述:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例 2:输入:nums = [5,7,7,8,8,10], target = 6输原创 2021-02-20 11:30:09 · 463 阅读 · 1 评论 -
LeetCode第617题 合并二叉树(递归遍历二叉树)
文章目录问题描述:解题思路:代码实现:问题描述:给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为NULL的节点将直接作为新二叉树的节点。示例 1:输入: Tree 1 Tree 2 1 2原创 2021-02-18 13:21:54 · 311 阅读 · 0 评论 -
LeetCode第543题 二叉树的直径
文章目录问题描述:解题思路:代码实现:问题描述:给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。解题思路: 所有节点中的(左子树深度+右子树的深度)的最大值就是树直原创 2021-02-18 11:47:46 · 164 阅读 · 0 评论 -
LeetCode 第448题 找到所有数组中消失的数字
文章目录问题描述:解题思路:代码实现:问题描述:给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。示例:输入:[4,3,2,7,8,2,3,1]输出:[5,6]解题思路: 由于数字范围均在 [1,n]中,我们也可以用一个长度为原创 2021-02-18 10:35:28 · 540 阅读 · 2 评论 -
LeetCode第461题 汉明距离
文章目录问题描述:解题思路:代码实现:问题描述:两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:x和y都在int的范围内示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。解题思路: 汉明距离实际上就是求两个数的二进制有几个位不相同,可以先用异或运算求出两个数的异或结原创 2021-02-13 08:58:45 · 273 阅读 · 1 评论 -
LeetCode第283题 移动零
文章目录问题描述:解题思路:代码实现:问题描述:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。解题思路: 解法一:使用冒泡排序的方法将所有0移动到后面。&emps; 解法二:遍历两次数组,第一次先将所有的非零数移动到前面,即先前靠拢;第二次遍历将数组末尾多余出来的位置赋值为零。原创 2021-02-12 13:18:27 · 1216 阅读 · 3 评论 -
LeetCode第234题 回文链表
文章目录问题描述:解题思路:代码实现:问题描述:请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true解题思路:解法一: 可以使用栈先进后出的特点进行解题,遍历链表将所有元素进行压栈,然后再从头遍历一次链表,与栈弹出的节点进行对比,看是否相等。需要注意的是比较的是节点的value值是否相等,而不是比较两个节点是否相等。解法二: 解法一的空间复杂度为o(n),为了原创 2021-02-12 11:22:41 · 299 阅读 · 0 评论 -
LeetCode第141题 环形链表的判断
文章目录问题描述:解题思路:代码实现:问题描述:给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?示原创 2021-02-07 11:28:09 · 359 阅读 · 0 评论 -
LeetCode136题 只出现一次的数字(位运算)
文章目录问题描述:解题思路代码实现:问题描述:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4解题思路 可以使用异或运算解题,异或运算可以使得两个相同的数结果为0,任何数字与0进行异或运算都得到它本身。由于数组中的其他数字都是出现两次所以将数组中所有的数原创 2021-02-07 10:50:58 · 225 阅读 · 0 评论 -
LeetCode121题 买卖股票的最佳时机(动态规划)
文章目录问题描述:解题思路:代码实现:问题描述:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出原创 2021-02-07 10:33:08 · 249 阅读 · 0 评论 -
LeetCode第101题 对称二叉树
文章目录问题描述:解题思路:代码实现:问题描述:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3解题思路: 我们可以将这一颗树复制成两棵,在任意一个节点上,用第一棵树的左节点去比较第二棵树的右节点,右节点比原创 2021-02-04 10:48:59 · 220 阅读 · 0 评论 -
LeetCode70题 爬楼梯(斐波那契数列 递归 动态规划)
文章目录问题描述:解题思路:代码实现:问题描述:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶解题思路:原创 2021-02-04 10:08:02 · 406 阅读 · 1 评论 -
LeetCode第53题 最大子序和 动态规划
文章目录问题描述:解题思路:代码实现:问题描述:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。解题思路: 使用动态规划求解,这题需要注意的是dp[i]表示的是以nums[i]结尾的所有子序列中的最大和;即dp[length-1]并不是想要的结果,结果应该是dp数组中的最大值,我原创 2021-02-03 12:08:43 · 268 阅读 · 1 评论 -
LeetCode第23题 合并K个升序链表
问题描述:给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[ 1->4->5, 1->3->4, 2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6示例 2:输入:lists原创 2020-09-17 10:09:46 · 917 阅读 · 0 评论 -
Leetcode第22题 Java 括号组合问题
问题描述:打印n对括号的全部有效组合。例如输入:3输出:((())),()()(),(())(),()(()),(()())解题思路:可以用递推法,当n等于1时只有一种组合,当n等于2时有四种组合。慢慢类推可以发现:n=k的组合方式等于n=k-1的组合方式中每一个元素分别在左边,右边添加一个括号以及把原来的方式给括起来。也就是说当n+1时,原组合方式中的每一种形式都可以推出三种形式。...原创 2020-02-14 13:25:55 · 1291 阅读 · 3 评论 -
剑指offer第25题 (LeetCode第21题) 合并两个有序链表
问题描述:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-sorted-lists解题思路: 使用递归的方法进行解题,不需要创建新的节点,只需要改变节点next的指向。代码实现:原创 2020-09-15 09:09:23 · 312 阅读 · 0 评论 -
LeetCode第20题 有效的括号
问题描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:输入: "([)]"输出: false示例 5:输入: "{[]}"输出: true来源:力扣原创 2020-09-11 09:02:05 · 230 阅读 · 0 评论 -
LeetCode第17题 电话号码的字母组合
问题描述给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/letter-combination原创 2020-09-10 10:24:32 · 227 阅读 · 0 评论 -
剑指offer第18题/LeetCode第19题 删除链表节点
文章目录问题描述:解题思路:代码实现:问题描述:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list解题思路:&emsp原创 2020-08-27 08:50:42 · 376 阅读 · 0 评论 -
LeetCode第16题 最接近的三数之和
文章目录问题描述:解题思路:代码实现:问题描述:给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problem原创 2020-08-25 09:16:47 · 400 阅读 · 0 评论 -
LeetCode 第15、18题 三数之和 四数之和
文章目录问题描述:解题思路:代码实现:问题描述:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]来源:力扣(LeetCode)链接:https://leetcode-cn原创 2020-08-24 11:01:01 · 381 阅读 · 0 评论 -
LeetCode第12/13题 罗马数字和整数的相互转换
问题描述:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II原创 2020-08-22 12:15:09 · 314 阅读 · 1 评论 -
LeetCode第十一题 盛最多水的容器(java)
问题描述:给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例:输入:[1,8,6,2,5,4,8,3,7]输出:49来原创 2020-08-12 09:23:37 · 558 阅读 · 1 评论 -
剑指offer第67题 字符串转换整数(LeetCode第八题)
问题描述:请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。注意:假如该字符串中的第一个非空格字符不是原创 2020-08-09 11:21:29 · 501 阅读 · 0 评论 -
LeetCode第七题 整数反转
问题描述:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-i原创 2020-08-08 09:27:18 · 559 阅读 · 0 评论 -
LeetCode第七题 Z字形变换
文章目录问题描述:解题思路:代码实现:问题描述:将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I R E T O E S I I G E D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int nu原创 2020-08-07 11:43:08 · 521 阅读 · 0 评论 -
LeetCode第五题 最长回文子串
文章目录问题描述:解题思路:代码实现:问题描述:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"链接:https://leetcode-cn.com/problems/longest-palindromic-substring点击解题思路:解法一: 暴力破解 使用双重循环,遍历每一个子串;然后进行判原创 2020-08-06 19:06:07 · 490 阅读 · 0 评论 -
LeetCode第四题 寻找两个正序数组的中位数
文章目录问题描述:解题思路1:代码实现:解题思路2:问题描述:给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是 (2 + 3)/2 = 2.5题目原创 2020-08-05 10:14:12 · 575 阅读 · 0 评论 -
剑指offer第48题 无重复字符的最长子串(尺取法和动态规划)
文章目录问题描述:解题思路:代码实现:问题描述:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的原创 2020-08-04 09:28:43 · 752 阅读 · 0 评论 -
LeetCode第二题 两数相加
问题描述:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807解题思路: 这题主要考察队链表的操作,由于位数是原创 2020-08-03 09:16:47 · 588 阅读 · 0 评论
分享