首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
LeetCode Hot 100
vim怎么退出
创建于2024-08-22
订阅专栏
坚持刷完热题100
等 1 人订阅
共100篇文章
创建于2024-08-22
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
20.旋转图像
题目链接 解法1 暴力解法 思路 我们仔细观察矩阵旋转之后第一行的坐标变化。 1:0,0 => 0,2 2:0,1 => 1,2 3:0,2 => 2,2 看起来由i, j 变成了 j, ? 我们再看
19.螺旋矩阵
题目链接 解法 模拟坐标轴 思路 模拟坐标轴就是把这个二维数组想象成坐标轴,用 x, y 来代表它的下标,而下标是经过有规律的变化,首先是向右,向下,向左,向上。 可以用两个数组来代表 x, y 的变
18.矩阵置零
题目链接 解法1 复制矩阵 思路 最简单也是空间消耗最多的办法,就是把矩阵额外复制一份,遍历复制的矩阵,如果遇到 0,就把原矩阵的横和列置为零。 代码 时空复杂度 时间复杂度:O(mn) 空间复杂度:
17.缺失的第一个正数
题目链接 解法1 set辅助 思路 在不考虑辅助空间的情况下,要想找出最小的正整数,可以把所有的数字放入 set 中。然后从 1 开始遍历 set,如果存在,那么遍历自增,直到 set 不包含这个数。
16.除自身以外数组的乘积
题目链接 解法 左右累乘 思路 用两个变量,一个记录左边的累积,一个记录右边的累积。在遍历数组的过程中,每个答案数组中的每项会被刷新两次。第一遍为 i 时,乘以左边的累计乘积。第二遍为n - i 时,
15.轮转数组
题目链接 解法1 暴力 思路 按照题目意思来,就是往头部插入最后一个元素。 代码 时空复杂度分析 时间复杂度:删除是 O(1) 的操作,但是往队头插入需要把剩下数组元素往后挪,时间开销是 O(n) ,
14.合并区间
题目链接 解法1 排序+ 思路 合并两个区间其实就是在看他们有没有交集。如何看判断是否有交集呢:左区间的右端点大于等于右区间的左端点。而这一条件需要左区间和右区间是有序排列,如果不是则会出现其他情况。
13.最大子数组和
题目链接 解法1 暴力解法 思路 求子数组的最大和,第一层遍历起点,第二层遍历终点,同时用变量累加,并和当前最大值做比较。 代码 时空复杂度分析 时间复杂度:O(n^2),这个会超时 空间复杂度:O(
12.最小覆盖子串
竟然有一个月没刷题了。。放完假咯,可以继续学习了~ 题目链接 解法1 暴力解法 思路 首先遍历 s 的每一个起始位置 i。从 i 开始扩大子串,直到 j。对于每个子串 s[i:j] 都检查是否包含字符
11.滑动窗口最大值
题目链接 题解1 暴力解法 思路 寻求滑动窗口的最大值,可以把滑动窗口看作一个子数组,每次对子数组求得最大值即可。 暴力解法会超时 代码 时空复杂度分析 时间复杂度:O(n * k) ,其中 k 最大
10.和为 K 的子数组
题目链接 题解1 暴力解法 思路 题目的意思就是从 i 开始往后累加 n 位是否有和等于 k。因为是子数组嘛,子数组的要求就是连续,所以不存在逆向等答案。 代码 时空复杂度分析 时间复杂度:两层循环
9.找到字符串中所有字母异位词
题目链接 题解1 暴力解法 思路 其实和上一题类似,就是遍历每个字母为起始位,然后向后遍历 p 个字符,与 p 做计数比较,相等则加入到集合里。 暴力解法会超时,但还是把代码贴一下。 代码 时空复杂度
8.无重复字符的最长子串
题目链接 题解1 暴力解法 思路 其实暴力解法最重要的就是读懂题目,题目想找出最长的子串,可以枚举每个字符为起点,往后枚举他的止点,顺便更新下答案。如果遇见相同字符,那么退出这个字符的枚举。 为了避免
7.接雨水
题目链接 示例 1: 示例 2: 题解1 暴力解法 思路 柱子与柱子之间能接多少水,就像上一题一样,取决于两边的高度。上一题是木板,这一题是柱子。 还和柱子本身的高度有关系,如果两边柱子之间的最矮那一
6.三数之和
题目链接 题解1 暴力解法 思路 要求出和为 0 的三元组,最简单就是枚举每一个数,如果为 0,则保存到结果集中。 需要注意的是去重,我们可以用 set 保存答案的排序过后的字符串,因为不同顺序也被视
5.盛最多水的容器
题目链接 示例 1: 示例 2: 题解 双指针 思路 题目要求我们求解容器的最大值,可以把 height[i] 看作一块木板,其实求的是面积的最大值。而两块木板的面积的最大值等于木板之间的间距 j -
4.移动零
题目链接 题解1 删除再添加 思路 可以先统计出0的个数,并在统计时删除0。最后在末位补0即可。 要注意如果从头遍历,使用 splice 删除时会打乱遍历顺序,所以要从后遍历。 代码 时空复杂度分析
3.最长连续序列
题目链接 题解1 排序后计数 思路 在不考虑时间复杂度的情况下,最简单的方法就是将数组排序后,遍历计数。 代码 时空复杂度分析 时间复杂度:代码中有排序和遍历的开销,最大的是排序 O(n logn)
2.字母异位词分组
题目链接 题解1 计数 思路 字母异位词的意思就是说一个单词,他们每个字母出现的次数一样。这样的话,需要知道他们每个字母出现的次数,所以需要计数,然后吧这个计数当做唯一标识缓存下来,遇到不同的就添加到
1.两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用