首页
首页
BOT
沸点
课程
直播
活动
AI刷题
NEW
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
leetcode详细题解
windliang
创建于2022-09-04
订阅专栏
包含多解法,网站:https://leetcode.wang
等 2 人订阅
共129篇文章
创建于2022-09-04
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
LeetCode 力扣 47. 全排列 II
和上一道题类似,不同之处就是给定的数字中会有重复的,这样的话用之前的算法会产出重复的序列。例如,[ 1 1 ],用之前的算法,产生的结果肯定是 [ [ 1 1 ], [ 1 1 ] ],也就是产生了重复的序列。但我们可以在上一题的解法中进行修改从而解决这道题。 这个没想到怎么在…
LeetCode 力扣 61. 旋转链表
将最后一个链表节点移到最前边,然后重复这个过程 k 次。 很明显我们不需要真的一个一个移,如果链表长度是 len, n = k % len,我们只需要将末尾 n 个链表节点整体移动到最前边就可以了。可以结合下边的图看一下,我们只需要找到倒数 n + 1 个节点的指针把它指向 n…
LeetCode 力扣 86. 分隔链表
题目描述的很难理解,其实回想一下快排就很好理解了。就是快排的分区,将链表分成了两部分,一部分的数字全部小于分区点 x,另一部分全部大于等于分区点 x。最后就是 1 2 2 和 4 3 5 两部分。 回顾下快排的解法,快排中我们分区用了两个指针,一个指针表示该指针前边的数都小于分…
LeetCode 力扣 92. 反转链表 II
给定链表的一个范围,将这个范围内的链表倒置。 首先找到 m 的位置,记录两端的节点 left1 和 left2 。 然后每遍历一个节点,就倒置一个节点。 到 n 的位置后,利用之前的 left1 和 left2 完成连接。 为了完成链表的倒置需要两个指针 pre 和 head。…
LeetCode 28. Implement strStr()
返回一个字符串 needle 在另一个字符串 haystack 中开始的位置,如果不存在就返回 -1 ,如果 needle 长度是 0 ,就返回 0 。 就是一一比较就好,看下代码吧。 时间复杂度:假设 haystack 和 needle 的长度分别是 n 和 k,对于每一个 …
LeetCode 力扣 56. 合并区间
给定一个列表,将有重叠部分的合并。例如[ [ 1 3 ] [ 2 6 ] ] 合并成 [ 1 6 ] 。 常规的思想,将大问题化解成小问题去解决。 假设给了一个大小为 n 的列表,然后我们假设 n - 1 个元素的列表已经完成了全部合并,我们现在要解决的就是剩下的 1 个,怎么…
LeetCode 力扣 74. 搜索二维矩阵
判断一个矩阵中是否存在某个数,矩阵是有序的。 看到了有序序列,啥都不用想直接二分,只需要考虑到怎么把二分时候的下标转换为矩阵的行、列下标就可以了,很简单,用除法和求余就够了。 时间复杂度:O ( log ( n ) )。 空间复杂度:O ( 1 )。 这道题的二分法,比较简单,…
leetCode 8 String to Integer
将一个字符串转为整型。 这道题,难度其实不大,和上道题有很多重合的地方。整体的思路就是遍历字符串,然后依次取出一个字符就可以了。无非是考虑一些特殊情况,还有就是理解题目意思。 经过多次试错,题目的意思是这样的。 从左遍历字符串,可以遇到空格,直到遇到 ' + ' 或者数字或者 …
leetCode 6 ZigZag Conversion
就是给定一个字符串,然后按写竖着的 「z」的方式排列字符,就是下边的样子。 然后按行的方式输出每个字符,第 0 行,第 1 行,第 2 行 .... 按照写 Z 的过程,遍历每个字符,然后将字符存到对应的行中。用 goningDown 保存当前的遍历方向,如果遍历到两端,就改变…
leetCode 10 Regular Expression Matching
一个简单规则的匹配,「点.」代表任意字符,「星号*」 代表前一个字符重复 0 次或任意次。 假如没有通配符 * ,这道题的难度就会少了很多,我们只需要一个字符,一个字符匹配就行。如果对递归不是很了解,强烈建议看下这篇文章,可以理清一下递归的思路。 text 和 pattern …
LeetCode 力扣 73. 矩阵置零
给定一个矩阵,然后找到所有含有 0 的地方,把该位置所在行所在列的元素全部变成 0。 暴力解法,用一个等大的空间把给定的矩阵存起来,然后遍历这个矩阵,遇到 0 就把原矩阵的当前行,当前列全部变作 0,然后继续遍历。 时间复杂度:O ( mn )。 空间复杂度:O(mn)。m 和…
LeetCode 力扣 82. 删除排序链表中的重复元素 II
给一个链表,如果一个数属于重复数字,就把这个数删除,一个都不留。 只需要两个指针,一个指针 pre 代表重复数字的前边的一个指针,另一个指针 cur 用来遍历链表。d 代表哨兵节点,用来简化边界条件,初始化为 head 指针的前一个节点。p 代表 pre,c 代表 cur。 时…
LeetCode 力扣 89. 格雷编码
生成 n 位格雷码,所谓格雷码,就是连续的两个数字,只有一个 bit 位不同。 按照动态规划或者说递归的思路去想,也就是解决了小问题,怎么解决大问题。 我们假设我们有了 n = 2 的解,然后考虑怎么得到 n = 3 的解。 如果再增加一位,无非是在最高位增加 0 或者 1,考…
LeetCode 力扣 95. 不同的二叉搜索树 II
给一个 n,用1...n 这些数字生成所有可能的二分查找树。所谓二分查找树,定义如下: 这是自己最早想到的一个思路。常规的回溯思想,就是普通的一个 for 循环,尝试插入 1, 2 ... n,然后进入递归,在原来的基础上继续尝试插入 1, 2... n。直到树包含了所有的数字…
LeetCode 力扣 105. 从前序与中序遍历序列构造二叉树
根据二叉树的先序遍历和中序遍历还原二叉树。 先序遍历的顺序是根节点,左子树,右子树。中序遍历的顺序是左子树,根节点,右子树。 所以我们只需要根据先序遍历得到根节点,然后在中序遍历中找到根节点的位置,它的左边就是左子树的节点,右边就是右子树的节点。 生成左子树和右子树就可以递归的…
LeetCode 力扣 137. 只出现一次的数字 II
136 题 的升级版,这个题的话意思是,每个数字都出现了 3 次,只有一个数字出现了 1 次,找出这个数字。同样要求时间复杂度为 O(n),空间复杂度为 O(1)。 大家可以先看一下 136 题 ,完全按 136 题 的每个解法去考虑一下。 先不考虑空间复杂度,用最常规的方法。…
leetCode 2 Add Two Numbers
就是两个链表表示的数相加,这样就可以实现两个很大的数相加了,无需考虑数值 int ,float 的限制了。 由于自己实现的很乱,直接按答案的讲解了。 链表最左边表示个位数,代表 342 + 465 =807 。 首先每一位相加肯定会产生进位,我们用 carry 表示。进位最大会…
LeetCode 力扣 69. x 的平方根
求一个数的平方根,不要求近似解,只需要整数部分。 本科的时候上计算方法的时候,讲过这个题的几个解法,二分法, 牛顿法,牛顿下山法,不同之处是之前是求近似解,类似误差是 0.0001 这样的。而这道题,只要求整数部分,所以先忘掉之前的解法,重新考虑一下。 求 n 的平方根的整数部…
LeetCode 20. Valid Parentheses
题目描述(简单难度)括号匹配问题。如果只有一种括号,我们完全可以用一个计数器count,遍历整个字符串,遇到左括号加1,遇到右括号减1,遍历结束后,如果count等于0,则表示全部匹配。但如果有多种括
LeetCode 力扣 45. 跳跃游戏 II
从数组的第 0 个位置开始跳,跳的距离小于等于数组上对应的数。求出跳到最后个位置需要的最短步数。比如上图中的第 0 个位置是 2,那么可以跳 1 个距离,或者 2 个距离,我们选择跳 1 个距离,就跳到了第 1 个位置,也就是 3 上。然后我们可以跳 1,2,3 个距离,我们选…
下一页