力扣 hot100
文章平均质量分 66
力扣 hot100
柠石榴
毕业三年从 0 开始学习编程语言
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【练习】【二分】力扣热题100 153. 寻找旋转排序数组中的最小值
注意,数组 [a[0], a[1], a[2], …, a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], …解释:原数组为 [0,1,2,4,5,6,7] ,旋转 4 次得到输入数组。解释:原数组为 [1,2,3,4,5] ,旋转 3 次得到输入数组。若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]输入:nums = [4,5,6,7,0,1,2]输入:nums = [3,4,5,1,2]原创 2025-02-19 16:32:03 · 373 阅读 · 0 评论 -
【练习】【二分】力扣热题100 33. 搜索旋转排序数组
处理特殊情况,如数组长度为1的情况,避免越界访问。原创 2025-02-19 11:40:34 · 467 阅读 · 0 评论 -
【练习】【二分】力扣热题100 34. 在排序数组中查找元素的第一个和最后一个位置
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。输入:nums = [5,7,7,8,8,10], target = 8。输入:nums = [5,7,7,8,8,10], target = 6。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。如果数组中不存在目标值 target,返回 [-1, -1]。输入:nums = [], target = 0。输出:[-1,-1]输出:[-1,-1]原创 2025-02-19 09:33:25 · 1015 阅读 · 0 评论 -
【练习】【二分】力扣热题100 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。每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。原创 2025-02-18 18:51:52 · 406 阅读 · 0 评论 -
【练习】【二分】力扣热题100 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) 的算法。原创 2025-02-18 11:40:46 · 353 阅读 · 0 评论 -
【练习】【滑动窗口】力扣热题100 438. 找到字符串中所有字母异位词
给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。起始索引等于 0 的子串是 “cba”, 它是 “abc” 的异位词。起始索引等于 6 的子串是 “bac”, 它是 “abc” 的异位词。起始索引等于 0 的子串是 “ab”, 它是 “ab” 的异位词。起始索引等于 1 的子串是 “ba”, 它是 “ab” 的异位词。输入: s = “cbaebabacd”, p = “abc”输入: s = “abab”, p = “ab”输出: [0,1,2]原创 2025-02-18 09:49:35 · 532 阅读 · 0 评论 -
【练习】【滑动窗口】力扣热题100 3. 无重复字符的最长子串
这段代码使用了滑动窗口算法来解决计算字符串中最长无重复字符子串长度的问题。当发现某个字符的出现次数大于 1 时,说明窗口内出现了重复字符,此时通过移动左指针。在这个过程中,不断更新最长无重复字符子串的长度。给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。输入: s = “abcabcbb”原创 2025-02-17 11:21:21 · 1036 阅读 · 0 评论 -
【练习】【双指针】力扣热题100 15. 三数之和
k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!不同的三元组是 [-1,0,1] 和 [-1,-1,2]。输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]输入:nums = [0,1,1]输入:nums = [0,0,0]解释:唯一可能的三元组和为 0。输出:[[0,0,0]]原创 2025-02-17 10:35:21 · 386 阅读 · 0 评论 -
【练习】【双指针】力扣热题100 11. 盛最多水的容器
给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。输入:[1,8,6,2,5,4,8,3,7]输入:height = [1,1]返回容器可以储存的最大水量。说明:你不能倾斜容器。原创 2025-02-16 17:17:40 · 353 阅读 · 0 评论 -
【练习】【双指针】力扣热题100 283. 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。原创 2025-02-16 16:45:11 · 471 阅读 · 0 评论 -
【练习】力扣热题 100 每日温度
给定一个整数数组 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,1,0]原创 2025-01-17 22:28:01 · 341 阅读 · 0 评论 -
【练习】力扣热题100 字符串解码
这段代码通过栈实现了字符串解码功能,能够高效地处理嵌套的编码结构。它的时间复杂度为O(n),空间复杂度为O(m),是一个经典的解法。原创 2025-01-17 11:46:58 · 1051 阅读 · 0 评论 -
【练习】 最小栈
经典双栈法:时间复杂度O(1),空间复杂度O(n),代码简洁,适合大多数场景。优化空间复杂度:通过只存储最小值的变化,空间复杂度优化为O(k)。单栈法:使用一个栈存储元素和最小值,空间复杂度O(n)。链表法:适合动态大小的栈,但需要手动管理内存。差值法:空间优化,但代码复杂且容易出错。如果你的应用场景对空间要求较高,可以选择优化空间复杂度的方法;否则,经典双栈法已经足够高效和简洁。原创 2025-01-15 20:41:16 · 853 阅读 · 0 评论 -
【练习】力扣热题100 有效的括号
这段代码通过栈和哈希表的方法,高效地解决了括号匹配问题。它的时间复杂度为O(n),空间复杂度为O(n),并且能够处理各种边界情况。如果需要进一步优化,可以使用数组代替哈希表,或者添加更多的边界条件处理。原创 2025-01-14 19:55:29 · 2042 阅读 · 0 评论 -
【练习】力扣热题100 除自身以外数组的乘积
这段代码是一个非常高效的实现,通过前缀积和后缀积的方法,完美地解决了“除自身以外数组的乘积”问题。它的时间复杂度为O(n),空间复杂度为O(1)(除了输出数组),并且避免了除法操作。如果需要进一步优化,可以添加边界条件处理或改进变量命名。原创 2025-01-14 18:50:50 · 1112 阅读 · 0 评论 -
【练习】力扣 热题100 轮转数组
这段代码通过三次反转操作实现了数组的旋转,是一种非常高效且简洁的实现方式。它的核心思想是通过反转来重新排列数组元素,避免了使用额外的空间,同时保证了线性的时间复杂度。原创 2025-01-13 15:30:56 · 969 阅读 · 0 评论 -
【练习】力扣 热题100 合并区间
优化后的代码在保持原有逻辑的基础上,通过预分配空间、使用遍历和简化逻辑,进一步提升了代码的性能和可读性。原创 2025-01-13 10:18:46 · 1216 阅读 · 0 评论 -
【练习】力扣 热题100 最大子数组和
(Maximum Subarray Problem)是一个经典的算法问题,目标是在一个整数数组中找到具有最大和的连续子数组。给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。输入: nums = [-2,1,-3,4,-1,2,1,-5,4]解释: 连续子数组[4,-1,2,1] 的和最大,为 6。输入: nums =[5,4,-1,7,8]子数组是数组中的一个连续部分。输入:nums = [1]原创 2025-01-12 11:00:45 · 1234 阅读 · 0 评论 -
【练习】力扣 热题100 最长连续序列
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。解释:最长数字连续序列是 [1, 2, 3, 4]。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。基于数组时间复杂度为O(nlogn)原创 2025-01-11 09:14:27 · 413 阅读 · 0 评论 -
【练习】力扣 热题100 字母异位词分组
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的所有字母得到的一个新单词。原创 2025-01-10 17:39:30 · 556 阅读 · 0 评论 -
【练习】力扣 热题100 两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个整数,并返回它们的数组下标。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。输入:nums = [2,7,11,15], target = 9。你可以按任意顺序返回答案。原创 2025-01-10 11:06:27 · 473 阅读 · 0 评论
分享