![](https://img-blog.csdnimg.cn/direct/64a9519c1ec44872a70c6f5c78b6ade3.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
LeetCode hot100
LeetCode hot100
LouHerGetUp
欢迎大家学习交流
展开
-
【LeetCode】287. 寻找重复数
给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。你设计的解决方案必须 不修改 数组 nums 且只用常量级 O(1) 的额外空间。假设 nums 只有 一个重复的整数 ,返回 这个重复的数。输入:nums = [1,3,4,2,2]输入:nums = [3,1,3,4,2]输入:nums = [3,3,3,3,3]原创 2024-04-26 09:37:33 · 346 阅读 · 0 评论 -
【LeetCode】169. 多数元素
给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。输入:nums = [2,2,1,1,1,2,2]输入:nums = [3,2,3]原创 2024-04-26 09:37:20 · 187 阅读 · 0 评论 -
【LeetCode】136. 只出现一次的数字
给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。输入:nums = [4,1,2,1,2]输入:nums = [2,2,1]输入:nums = [1]原创 2024-04-26 09:36:59 · 207 阅读 · 0 评论 -
【LeetCode】1143. 最长公共子序列
一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。输入:text1 = “abcde”, text2 = “ace”输入:text1 = “abc”, text2 = “abc”解释:两个字符串没有公共子序列,返回 0。原创 2024-04-26 09:36:37 · 379 阅读 · 0 评论 -
【LeetCode】416. 分割等和子集
给你一个 只包含正整数 的 非空 数组 nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。解释:数组可以分割成 [1, 5, 5] 和 [11]。解释:数组不能分割成两个元素和相等的子集。输入:nums = [1,5,11,5]输入:nums = [1,2,3,5]原创 2024-04-26 09:36:23 · 177 阅读 · 0 评论 -
【LeetCode】152. 乘积最大子数组
给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续。(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。解释: 子数组 [2,3] 有最大乘积 6。输入: nums = [2,3,-2,4]输入: nums = [-2,0,-1]测试用例的答案是一个 32-位 整数。原创 2024-04-26 09:36:09 · 221 阅读 · 0 评论 -
【LeetCode】300. 最长递增子序列
子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的。解释:最长递增子序列是 [2,3,7,101],因此长度为 4。给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。输入:nums = [10,9,2,5,3,7,101,18]输入:nums = [7,7,7,7,7,7,7]输入:nums = [0,1,0,3,2,3]原创 2024-04-26 09:35:57 · 303 阅读 · 0 评论 -
【LeetCode】139. 单词拆分
输入: s = “catsandog”, wordDict = [“cats”, “dog”, “sand”, “and”, “cat”]解释: 返回 true 因为 “applepenapple” 可以由 “apple” “pen” “apple” 拼接成。输入: s = “applepenapple”, wordDict = [“apple”, “pen”]输入: s = “leetcode”, wordDict = [“leet”, “code”]注意,你可以重复使用字典中的单词。原创 2024-04-26 09:35:24 · 214 阅读 · 0 评论 -
【LeetCode】322. 零钱兑换
计算并返回可以凑成总金额所需的 最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。输入:coins = [1, 2, 5], amount = 11。输入:coins = [2], amount = 3。输入:coins = [1], amount = 0。你可以认为每种硬币的数量是无限的。解释:11 = 5 + 5 + 1。原创 2024-04-26 09:35:10 · 173 阅读 · 0 评论 -
【LeetCode】279. 完全平方数
完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。给你一个整数 n ,返回 和为 n 的完全平方数的最少数量。解释:12 = 4 + 4 + 4。解释:13 = 4 + 9。原创 2024-04-26 09:34:59 · 178 阅读 · 0 评论 -
【LeetCode】198. 打家劫舍
每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。解释:偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。输入:[2,7,9,3,1]输入:[1,2,3,1]原创 2024-04-26 09:34:18 · 271 阅读 · 0 评论 -
【LeetCode】31. 下一个排列
例如,arr = [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1]。而 arr = [3,2,1] 的下一个排列是 [1,2,3] ,因为 [3,2,1] 不存在一个字典序更大的排列。类似地,arr = [2,3,1] 的下一个排列是 [3,1,2]。例如,arr = [1,2,3] 的下一个排列是 [1,3,2]。输入:nums = [1,2,3]输入:nums = [3,2,1]输出:[1,3,2]输出:[1,2,3]原创 2023-10-17 22:40:37 · 191 阅读 · 0 评论 -
【LeetCode】75. 颜色分类
循环不变量 简单说就是在循环的过程中保持不变的性质,这个性质是人为根据需要解决的任务定义的。自己写的,从头遍历,如果为0,则放到最前,如果为2,则放到最后,同时删除,思路没问题,但是由于题目要求只能原地修改,可能不能直接拼接数组,导致结果输出与调试时的对不上。给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。输入:nums = [2,0,2,1,1,0]输出:[0,0,1,1,2,2]输出:[0,1,2]原创 2023-10-22 15:26:02 · 23 阅读 · 0 评论 -
【LeetCode】72. 编辑距离
给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数。inention -> enention (将 ‘i’ 替换为 ‘e’)enention -> exention (将 ‘n’ 替换为 ‘x’)exention -> exection (将 ‘n’ 替换为 ‘c’)horse -> rorse (将 ‘h’ 替换为 ‘r’)rorse -> rose (删除 ‘r’)rose -> ros (删除 ‘e’)这种方法会超出时间限制。原创 2024-04-16 00:08:19 · 267 阅读 · 0 评论 -
【LeetCode】5. 最长回文子串
如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。解释:“aba” 同样是符合题意的答案。输入:s = “babad”输入:s = “cbbd”原创 2023-10-13 20:09:06 · 146 阅读 · 0 评论 -
【LeetCode】64. 最小路径和
给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输入:grid = [[1,2,3],[4,5,6]]解释:因为路径 1→3→1→1→1 的总和最小。说明:每次只能向下或者向右移动一步。自己写的,参考上一题,动态规划。官方解,思路完全一样。原创 2023-10-21 15:28:39 · 69 阅读 · 0 评论 -
【LeetCode】62. 不同路径
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。从左上角开始,总共有 3 条路径可以到达右下角。输入:m = 3, n = 7。输入:m = 3, n = 2。问总共有多少条不同的路径?原创 2023-10-21 11:31:04 · 89 阅读 · 0 评论 -
【LeetCode】118. 杨辉三角
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。输入: numRows = 5。输入: numRows = 1。原创 2024-04-25 09:48:35 · 355 阅读 · 0 评论 -
【LeetCode】70. 爬楼梯
自己写的,回溯算法,但是超过了最大递归深度,运行不了,提交时超出内存限制了。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?需要 n 阶你才能到达楼顶。本题可转化为 求斐波那契数列的第。解释:有两种方法可以爬到楼顶。解释:有三种方法可以爬到楼顶。,只需要两项就足够了。原创 2023-10-21 21:49:32 · 65 阅读 · 0 评论 -
【LeetCode】763. 划分字母区间
像 “ababcbacadefegde”, “hijhklij” 这样的划分是错误的,因为划分的片段数较少。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。划分结果为 “ababcbaca”、“defegde”、“hijhklij”。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s。输入:s = “ababcbacadefegdehijhklij”返回一个表示每个字符串片段的长度的列表。输入:s = “eccbbbbdec”输出:[9,7,8]原创 2024-04-25 09:46:55 · 261 阅读 · 0 评论 -
【LeetCode】45. 跳跃游戏 II
每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。在每一步贪心选择中,只考虑当前对自己最有利的选择,而不去考虑在后面看来这种选择是否合理。初始位置为 nums[0]。输入: nums = [2,3,1,1,4]解释: 跳到最后一个位置的最小跳跃数是 2。输入: nums = [2,3,0,1,4]原创 2023-10-19 00:29:53 · 168 阅读 · 0 评论 -
【LeetCode】55. 跳跃游戏
给你一个非负整数数组 nums ,你最初位于数组的 第一个下标。解释:无论怎样,总会到达下标为 3 的位置。解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。判断你是否能够到达最后一个下标,如果可以,返回 true;否则,返回 false。官方解,稍作修改就可以,注意可到达的边界和需要遍历的数组长度。自己写的不对,贪心算法,处理不了一些带0的数组。输入:nums = [2,3,1,1,4]输入:nums = [3,2,1,0,4]原创 2023-10-20 13:54:36 · 143 阅读 · 0 评论 -
【LeetCode】121. 买卖股票的最佳时机
解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;解释:在这种情况下, 没有交易完成, 所以最大利润为 0。输入:prices = [7,6,4,3,1]输入:[7,1,5,3,6,4]原创 2024-04-25 09:44:49 · 355 阅读 · 0 评论 -
【LeetCode】20. 有效的括号
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。每个右括号都有一个对应的相同类型的左括号。左括号必须用相同类型的右括号闭合。输入:s = “()[]{}”左括号必须以正确的顺序闭合。输入:s = “()”输入:s = “(]”原创 2023-10-15 10:27:56 · 60 阅读 · 0 评论 -
【LeetCode】33. 搜索旋转排序数组
在传递给函数之前,nums 在预先未知的某个下标 k(0原创 2023-10-17 23:37:09 · 143 阅读 · 0 评论 -
【LeetCode】34. 在排序数组中查找元素的第一个和最后一个位置
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。输入:nums = [5,7,7,8,8,10], target = 8。输入:nums = [5,7,7,8,8,10], target = 6。如果数组中不存在目标值 target,返回 [-1, -1]。输入:nums = [], target = 0。官方解,使用蓝红二分法。输出:[-1,-1]输出:[-1,-1]原创 2023-10-17 23:38:13 · 133 阅读 · 0 评论 -
【LeetCode】74. 搜索二维矩阵
输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13。输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3。给你一个整数 target ,如果 target 在矩阵中,返回 true;否则,返回 false。自己写的,先寻找到所在行,然后再寻找所在列。原创 2023-10-22 01:27:41 · 88 阅读 · 0 评论 -
【LeetCode】35. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。输入: nums = [1,3,5,6], target = 5。输入: nums = [1,3,5,6], target = 2。输入: nums = [1,3,5,6], target = 7。请必须使用时间复杂度为 O(log n) 的算法。自己写的,采用蓝红二分法,套模板,简单方便。原创 2023-10-18 00:06:02 · 221 阅读 · 0 评论 -
【LeetCode】79. 单词搜索
输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “ABCCED”输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “ABCB”输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “SEE”原创 2023-10-22 17:50:39 · 29 阅读 · 0 评论 -
【LeetCode】22. 括号生成
输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。原创 2023-10-15 13:09:50 · 161 阅读 · 0 评论 -
【LeetCode】39. 组合总和
思路分析:根据示例 1:输入: candidates = [2, 3, 6, 7],target = 7。2 和 3 可以形成一组候选,2 + 2 + 3 = 7。输入:candidates = [2,3,6,7], target = 7。输入: candidates = [2,3,5], target = 8。输入: candidates = [2], target = 1。输出: [[2,2,2,2],[2,3,3],[3,5]]7 也是一个候选, 7 = 7。输出:[[2,2,3],[7]]原创 2023-10-18 13:50:08 · 100 阅读 · 0 评论 -
【LeetCode】17. 电话号码的字母组合
输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。当题目中出现 “所有组合” 等类似字眼时,我们第一感觉就要想到用回溯。感觉这两种方法都不太好理解,后面还要巩固一下。输入:digits = “23”输出:[“a”,“b”,“c”]输入:digits = “2”输入:digits = “”原创 2023-10-14 19:11:46 · 326 阅读 · 0 评论 -
【LeetCode】78. 子集
给你一个整数数组 nums ,数组中的元素 互不相同。返回该数组所有可能的子集(幂集)。输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。自己写的,根据上一题,回溯算法,再套个for循环就可以。输入:nums = [1,2,3]输入:nums = [0]输出:[[],[0]]原创 2023-10-22 16:41:20 · 29 阅读 · 0 评论 -
【LeetCode】46. 全排列
在分步解决问题的过程中,当它通过尝试发现现有的分步答案不能得到有效的正确的解答的时候,它将取消上一步甚至是上几步的计算,再通过其它的可能的分步解答再次尝试寻找问题的答案。如果还存在未被发现的结点,则选择其中一个作为源结点并重复以上过程,整个进程反复进行直到所有结点都被访问为止。因为变量 path 所指向的列表 在深度优先遍历的过程中只有一份 ,深度优先遍历完成以后,回到了根结点,成为空列表。输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]原创 2023-10-19 01:32:30 · 383 阅读 · 0 评论 -
【LeetCode】347. 前 K 个高频元素
给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。输入: nums = [1,1,1,2,2,3], k = 2。输入: nums = [1], k = 1。原创 2024-04-25 01:53:28 · 253 阅读 · 4 评论 -
【LeetCode】215. 数组中的第K个最大元素
请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。输入: [3,2,3,1,2,4,5,5,6], k = 4。你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。输入: [3,2,1,5,6,4], k = 2。原创 2024-04-25 01:48:59 · 230 阅读 · 0 评论 -
【LeetCode】739. 每日温度
给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。输入: temperatures = [73,74,75,71,69,72,76,73]输入: temperatures = [30,40,50,60]输入: temperatures = [30,60,90]输出: [1,1,4,2,1,1,0,0]输出: [1,1,1,0]输出: [1,1,0]原创 2024-04-25 01:44:14 · 209 阅读 · 0 评论 -
【LeetCode】394. 字符串解码
编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。输入:s = “2[abc]3[cd]ef”输入:s = “abc3[cd]xyz”输入:s = “3[a]2[bc]”输入:s = “3[a2[c]]”输出:“accaccacc”输出:“aaabcbc”原创 2024-04-25 01:42:23 · 226 阅读 · 0 评论 -
【LeetCode】155. 最小栈
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。原创 2024-04-25 01:40:05 · 164 阅读 · 0 评论 -
【LeetCode】153. 寻找旋转排序数组中的最小值
已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。解释:原数组为 [0,1,2,4,5,6,7] ,旋转 3 次得到输入数组。解释:原数组为 [11,13,15,17] ,旋转 4 次得到输入数组。解释:原数组为 [1,2,3,4,5] ,旋转 3 次得到输入数组。你必须设计一个时间复杂度为 O(log n) 的算法解决此问题。输入:nums = [4,5,6,7,0,1,2]输入:nums = [11,13,15,17]输入:nums = [3,4,5,1,2]原创 2024-04-25 01:37:56 · 186 阅读 · 0 评论