LeetCode ⭐Hot100
文章平均质量分 54
本专栏题目属于LeetCode Hot100,但并未将较简单的题目写入博客中
牧心.
心之所向,素履以往
展开
-
【LeetCode】21. 合并两个有序链表【链表】 & 146. LRU 缓存【Map+双向链表】/ 【LinkedHashMap】 & 25. K 个一组翻转链表【头插法】
文章目录第一题:[21. 合并两个有序链表【链表】](https://leetcode-cn.com/problems/merge-two-sorted-lists/)第二题:[146. LRU 缓存【Map+双向链表】](https://leetcode-cn.com/problems/lru-cache/)第三题:[25. K 个一组翻转链表【头插法】](https://leetcode-cn.com/problems/reverse-nodes-in-k-group/)第一题:21. 合并两个有序原创 2022-03-08 16:38:29 · 1475 阅读 · 0 评论 -
【LeetCode】72. 编辑距离 【动态规划】
题目链接:https://leetcode-cn.com/problems/edit-distance/题目描述给你两个单词word1 和word2,请你计算出将word1转换成word2 所使用的最少操作数。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符测试用例示例1:输入:word1 = "horse", word2 = "ros"输出:3解释:horse -> rorse (将 'h' 替换为 'r')rors...原创 2021-08-28 23:07:09 · 9770 阅读 · 0 评论 -
【LeetCode】17. 电话号码的字母组合 【回溯】
题目链接:题目介绍给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。测试用例示例 1:输入:digits = "23"输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]示例 2:输入:digits = ""输出:[]示例 3:输入:digits = "2"输出:["a","b","c"]提..原创 2021-08-28 22:25:00 · 9712 阅读 · 0 评论 -
【LeetCode】42. 接雨水【动态规划】【双指针】
题目链接:https://leetcode-cn.com/problems/trapping-rain-water/题目介绍给定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 个单位的雨水(蓝色部分表示雨水)。示例...原创 2021-08-27 23:38:18 · 9762 阅读 · 0 评论 -
【LeetCode】279. 完全平方数 【动态规划】【四平方和定理】
题目链接:https://leetcode-cn.com/problems/perfect-squares/题目介绍给定正整数n,找到若干个完全平方数(比如1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。给你一个整数 n ,返回和为 n 的完全平方数的 最少数量 。完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。测试用例...原创 2021-08-25 22:22:00 · 11515 阅读 · 0 评论 -
【LeetCode】739. 每日温度【单调栈】
题目链接:https://leetcode-cn.com/problems/daily-temperatures/题目介绍请根据每日 气温 列表 temperatures,请计算在每一天需要等几天才会有更高的温度。如果气温在这之后都不会升高,请在该位置用0 来代替。测试样例示例 1:输入: temperatures = [73,74,75,71,69,72,76,73]输出:[1,1,4,2,1,1,0,0]示例 2:输入: temperatures = [30...原创 2021-08-24 21:50:32 · 11420 阅读 · 0 评论 -
【LeetCode】287. 寻找重复数【快慢指针】
题目链接:https://leetcode-cn.com/problems/find-the-duplicate-number/题目介绍给定一个包含n + 1 个整数的数组nums ,其数字都在 1 到 n之间(包括 1 和 n),可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数 ,找出 这个重复的数 。你设计的解决方案必须不修改数组 nums 且只用常量级 O(1) 的额外空间。测试用例示例 1:输入:nums = [1,3,4,2,2]输出:...原创 2021-08-24 21:22:41 · 11599 阅读 · 1 评论 -
【LeetCode】647. 回文子串【动态规划】【中心扩展】
题目链接:https://leetcode-cn.com/problems/palindromic-substrings/题目介绍给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。测试用例示例 1:输入:"abc"输出:3解释:三个回文子串: "a", "b", "c"示例 2:输入:"aaa"输出:6解释:6个回文子串: "a", "a", "a", "aa", "a.原创 2021-08-24 20:06:37 · 11516 阅读 · 0 评论 -
【LeetCode】236. 二叉树的最近公共祖先
题目链接:https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree/题目描述给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”测试用例示例 1:输入:root = [3,5,1,6,2,0,8,n.原创 2021-08-22 19:41:17 · 11261 阅读 · 0 评论 -
【LeetCode】312. 戳气球 【记忆化搜索】【动态规划】
题目链接:https://leetcode-cn.com/problems/burst-balloons/题目描述有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组nums中。现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得nums[i - 1] * nums[i] * nums[i + 1] 枚硬币。这里的 i - 1 和 i + 1 代表和i相邻的两个气球的序号。如果 i - 1或 i + 1 超出了数组的边界,那么就当它是一个数字...原创 2021-08-21 21:56:12 · 11415 阅读 · 1 评论 -
【LeetCode】96. 不同的二叉搜索树【卡特兰数】
题目链接:https://leetcode-cn.com/problems/unique-binary-search-trees/题目描述给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。测试用例示例 1:输入:n = 3输出:5示例 2:输入:n = 1输出:1提示:1 <= n <= 19题解方法一:动态规划定一个有序序列 1 ⋯ n,为了构建出一.原创 2021-08-21 17:08:33 · 11548 阅读 · 0 评论 -
【LeetCode】238. 除自身以外数组的乘积
题目链接:https://leetcode-cn.com/problems/product-of-array-except-self/题目描述给你一个长度为n的整数数组nums,其中n > 1,返回输出数组output,其中 output[i]等于nums中除nums[i]之外其余各元素的乘积。测试用例示例:输入: [1,2,3,4]输出: [24,12,8,6]提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在...原创 2021-08-20 21:09:22 · 11922 阅读 · 0 评论 -
【LeetCode】48. 旋转图像【两次翻转】
题目链接:https://leetcode-cn.com/problems/rotate-image/题目描述给定一个 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:输入:m...原创 2021-08-16 17:14:31 · 12217 阅读 · 0 评论 -
【LeetCode】94. 二叉树的中序遍历
题目链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal/难度:简单题目描述给定一个二叉树的根节点 root ,返回它的 中序遍历。测试用例示例 1:输入:root = [1,null,2,3]输出:[1,3,2]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[2,1]..原创 2021-05-12 10:55:03 · 17796 阅读 · 0 评论 -
【LeetCode】22. 括号生成
题目链接:https://leetcode-cn.com/problems/generate-parentheses/难度:中等题目描述数字 n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。测试用例示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:n = 1输出:["()"]提示:1 <= n <= 8...原创 2021-05-11 13:49:05 · 17757 阅读 · 0 评论 -
【LeetCode】46. 全排列
题目链接:https://leetcode-cn.com/problems/permutations/难度:中等题目描述给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。测试用例示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3:输.原创 2021-05-11 13:08:17 · 17896 阅读 · 0 评论 -
【LeetCode】338. 比特位计数
题目链接:https://leetcode-cn.com/problems/counting-bits/难度:中等题目描述给定一个非负整数num。对于0 ≤ i ≤ num 范围中的每个数字i,计算其二进制数中的 1 的数目并将它们作为数组返回。测试用例示例 1:输入: 2输出: [0,1,1]示例2:输入: 5输出: [0,1,1,2,1,2]题解这个题目只能怪,数字分两种,一个是奇数,一个是偶数。奇数n的二进制中1的个数比n-1的多一个...原创 2021-05-09 23:44:31 · 17970 阅读 · 0 评论 -
【LeetCode】78. 子集
题目链接:https://leetcode-cn.com/problems/subsets/难度:中等题目描述给你一个整数数组nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。测试用例示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2:输入:nums = [0]输出:[[],[0]]提示:.原创 2021-05-09 23:23:25 · 18275 阅读 · 0 评论 -
【LeetCode】20. 有效的括号
题目链表:https://leetcode-cn.com/problems/valid-parentheses/难度:简单题目描述给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。测试用例示例 1:输入:s = "()"输出:true示例2:输入:s = "()[]{}"输出:true示例3:输入:s = "(]"...原创 2021-04-26 23:37:45 · 18778 阅读 · 0 评论 -
【LeetCode】234. 回文链表
题目链表:https://leetcode-cn.com/problems/palindrome-linked-list/难度:简单题目描述请判断一个链表是否为回文链表。测试用例示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true题解第一次遍历链表,把遍历的结果存入栈中。然后进行第二次遍历链表,依次和栈中元素对比。时间复杂度:空间复杂度:代码// C++.原创 2021-04-26 23:33:34 · 18730 阅读 · 0 评论 -
【LeetCode】141. 环形链表
题目链接:https://leetcode-cn.com/problems/linked-list-cycle/难度:简单题目描述给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 tru.原创 2021-04-26 23:26:23 · 18797 阅读 · 0 评论 -
【LeetCode】1.两数之和 [两种解法]
题目链接:https://leetcode-cn.com/problems/two-sum/题目描述:给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]题解:...原创 2020-11-20 22:44:14 · 26990 阅读 · 1 评论 -
【LeetCode】70. 爬楼梯 【动态规划】
题目链接:https://leetcode-cn.com/problems/climbing-stairs/难度:简单题目描述假设你正在爬楼梯。需要 n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。测试用例示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. ...原创 2021-04-26 23:20:27 · 18915 阅读 · 0 评论 -
【LeetCode】543. 二叉树的直径
题目链接:https://leetcode-cn.com/problems/diameter-of-binary-tree/难度:简单题目描述给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。测试用例给定二叉树 1 / \ 2 3 / \ 4 5 返回3, 它的长度是路径 [4,2,1,3]...原创 2021-04-26 23:17:21 · 19016 阅读 · 0 评论 -
【LeetCode】53. 最大子序和 【动态规划】
题目链接:https://leetcode-cn.com/problems/maximum-subarray/难度:简单题目描述给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。测试用例示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组[4,-1,2,1] 的和最大,为6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = ...原创 2021-04-24 00:36:35 · 18972 阅读 · 0 评论 -
【LeetCode】101. 对称二叉树
题目链接:https://leetcode-cn.com/problems/symmetric-tree/难度:简单题目描述给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[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-04-23 23:54:54 · 18793 阅读 · 0 评论 -
【LeetCode】155. 最小栈 【辅助栈】
题目链接:https://leetcode-cn.com/problems/min-stack/难度:简单题目描述设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop()—— 删除栈顶的元素。top()—— 获取栈顶元素。getMin() —— 检索栈中的最小元素。测试用例输入:["MinStack","push","push","push","getMin","pop","to...原创 2021-04-23 22:16:01 · 18856 阅读 · 0 评论 -
【LeetCode】121. 买卖股票的最佳时机 【动态规划】
题目链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/难度:简单题目描述给定一个数组 prices ,它的第i 个元素prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。测试样例示例 1:...原创 2021-04-23 22:00:41 · 18867 阅读 · 0 评论 -
【LeetCode】160. 相交链表
题目链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists/难度:简单题目描述编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。测试用例示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference .原创 2021-04-23 01:54:59 · 18638 阅读 · 0 评论 -
【LeetCode】283. 移动零
题目链接:https://leetcode-cn.com/problems/move-zeroes/难度:简单题目描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。测试样例输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。题解用双指针,左指针指向当前已经处理好的序列的尾部,右指针指向待处理序列的头部。右指针不断向右移动,每次右指.原创 2021-04-23 01:26:22 · 18897 阅读 · 0 评论 -
【LeetCode】448. 找到所有数组中消失的数字
题目链接:https://leetcode-cn.com/problems/find-all-numbers-disappeared-in-an-array/难度:难度题目描述给定一个范围在1 ≤ a[i] ≤ n (n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。测试用例...原创 2021-04-22 23:35:00 · 18677 阅读 · 0 评论 -
【LeetCode】136. 只出现一次的数字 【异或】
题目链接:https://leetcode-cn.com/problems/single-number/难度:简单题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?测试用例示例 1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 4题解思路简单明了:用异或(XOR)!两两抵消,剩..原创 2021-04-22 23:10:07 · 18868 阅读 · 0 评论 -
【LeetCode】169. 多数元素
题目链接:https://leetcode-cn.com/problems/majority-element/难度:简单题目描述给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。测试用例示例1:输入:[3,2,3]输出:3示例2:输入:[2,2,1,1,1,2,2]输出:2题解选取候选的多数元素。依次扫描所给数组中的每个整数,将第一...原创 2021-04-22 23:04:36 · 18828 阅读 · 0 评论 -
【LeetCode】21. 合并两个有序链表
题目链接:https://leetcode-cn.com/problems/merge-two-sorted-lists/难度:简单题目描述将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。测试用例示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:..原创 2021-04-22 22:56:51 · 20259 阅读 · 0 评论 -
【LeetCode】206. 反转链表
链接:https://leetcode-cn.com/problems/reverse-linked-list/难度:简单题目描述反转一个单链表。示例输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL题解两种方法:(1)迭代。比较简单,直接上代码。(2)递归。问题转化为:假设链表的其余部分已经被反转,如何反转它前面的部分。代码(1)迭代.原创 2021-04-21 22:37:15 · 18729 阅读 · 0 评论 -
【LeetCode】104. 二叉树的最大深度
链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/难度:简单题目描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。题解简单递归。各...原创 2021-04-21 22:16:04 · 18774 阅读 · 0 评论 -
【LeetCode】226. 翻转二叉树
链接:https://leetcode-cn.com/problems/invert-binary-tree/难度:简单题目描述翻转一棵二叉树。示例输入: 4 / \ 2 7/ \ / \1 3 6 9输出: 4 / \ 7 2/ \ / \9 6 3 1题解后序递归,交换左右子树。代码//Java/** * Definition for a bi...原创 2021-04-21 22:02:32 · 18824 阅读 · 0 评论 -
【LeetCode】617. 合并二叉树
链接:https://leetcode-cn.com/problems/merge-two-binary-trees/难度:简单题目描述给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为NULL 的节点将直接作为新二叉树的节点。示例输入: Tree 1 Tree 2 ...原创 2021-04-20 20:22:31 · 18833 阅读 · 0 评论 -
【LeetCode】461. 汉明距离
链接:https://leetcode-cn.com/problems/hamming-distance/难度:容易题目描述两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。...原创 2021-04-16 23:50:07 · 18792 阅读 · 0 评论 -
【LeetCode】3. 无重复字符的最长子串 【滑动窗口】
题目链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/难度:中等题目描述给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。测试用例示例1:输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长...原创 2021-04-10 00:40:28 · 19127 阅读 · 0 评论