首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
leetcode详细题解
windliang
创建于2022-09-04
订阅专栏
包含多解法,网站:https://leetcode.wang
等 2 人订阅
共129篇文章
创建于2022-09-04
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
LeetCode 力扣 116. 填充每个节点的下一个右侧节点指针
给定一个满二叉树,每个节点多了一个next指针,然后将所有的next指针指向它的右边的节点。并且要求空间复杂度是O(1)。 如果没有要求空间复杂度这道题就简单多了,我们只需要用一个队列做BFS,BFS参见 102 题。然后按顺序将每个节点连起来就可以了。 当然既然题目要求了空间…
leetCode 15 3Sum
无脑搜索,三层循环,遍历所有的情况。但需要注意的是,我们需要把重复的情况去除掉,就是 [1, -1 ,0] 和 [0, -1, 1] 是属于同一种情况的。 时间复杂度:n 表示 num 的个数,三个循环 O(n³),而 isInList 也需要 O(n),总共就是 ?O(n^…
LeetCode 力扣 41. 缺失的第一个正数
给一串数字,找出缺失的最小正数。限制了时间复杂度为 O(n),空间复杂度为 O(1)。 参考这里。 如果没限制空间复杂度,我们可以这样想。用一个等大的数组去顺序保存这些数字。 比如说,数组 nums [ 3 4 -1 1 8],它的大小是 5。然后再创建一个等大的数组 a,初始…
LeetCode 力扣 49. 字母异位词分组
给定多个字符串,然后把它们分类。只要字符串所包含的字符完全一样就算作一类,不考虑顺序。 最通用的一种解法,对于每个字符串,比较它们的每个字符出现的个数是否相等,相等的话就把它们放在一个 list 中去,作为一个类别。最外层写一个 for 循环然后一一比较就可以,还可以用一个等大…
LeetCode 力扣 80. 删除排序数组中的重复项 II
26 题的升级版,给定一个数组,每个数字只允许出现 2 次,将满足条件的数字全部移到前边,并且返回有多少数字。例如 [ 1, 1, 1, 2, 2, 3, 4, 4, 4, 4 ],要变为 [ 1, 1, 2, 2, 3, 4, 4 ...] 剩余部分的数字不要求。 利用26 …
LeetCode 力扣 104. 二叉树的最大深度
输出二叉树的深度。 依旧是考的二叉树的遍历。最简单的思路就是用递归进行 DFS 即可。 可以直接仿照 103 题,利用一个队列,进行 BFS 即可。代码可以直接搬过来。 依旧考的是二叉树的遍历方式,没有什么难点。
leetCode 5 Longest Palindromic Substring
给定一个字符串,输出最长的回文子串。回文串指的是正的读和反的读是一样的字符串,例如 "aba","ccbbcc"。 暴力求解,列举所有的子串,判断是否为回文串,保存最长的回文串。 时间复杂度:两层 for 循环 O(n²),for 循环里边判断是否为回文,O(n),所以时间复杂…
LeetCode 力扣 72. 编辑距离
由一个字符串变为另一个字符串的最少操作次数,可以删除一个字符,替换一个字符,插入一个字符,也叫做最小编辑距离。 我们可以发现删除一个字符和插入一个字符是等效的,对于变换次数并没有影响。例如 "a" 和 "ab" ,既可以 "a" 加上一个字符 "b" 变成 "ab",也可以是 …
LeetCode 力扣 101. 对称二叉树
判断一个二叉树是否关于中心轴对称。 和 100 题 判断两个二叉树是否相等其实是一样的思路,都是用某种遍历方法来同时遍历两个树,然后看是否对应相等。 这里的需要遍历的两个树就是左子树和右子树了。 这里的对应相等的话,因为判断左子树 A 和右子树 B 是否对称,需要判断两点。 A…
LeetCode 力扣 70. 爬楼梯
爬楼梯,每次走 1 个或 2 个台阶,n 层的台阶,总共有多少种走法。 用递归的思路想一下,要求 n 层的台阶的走法,由于一次走 1 或 2 个台阶,所以上到第 n 个台阶之前,一定是停留在第 n - 1 个台阶上,或者 n - 2 个台阶上。所以如果用 f ( n ) 代表 …
LeetCode 力扣 36. 有效的数独
一个 9 * 9 的数独的棋盘。判断已经写入数字的棋盘是不是合法。需要满足下边三点, 9 个 3 * 3 的小棋盘中的数字也不能重复。 只能是 1 - 9 中的数字,不需要考虑数独最后能不能填满。 需要满足三条,那就一条一条判断。 时间复杂度:整个棋盘访问了三次,如果棋盘大小是…
LeetCode 力扣 63. 不同路径 II
对62题的变体,增加了一些不能走的格子,用 1 表示。还是输出从左上角到右下角总共有多少种走法。 没做过62题的话可以先看一下,62 题总结的很详细了,我直接在 62 题的基础上改了。 在62题解法二最后个想法上改。 时间复杂度:O(m * n)。 空间复杂度:O(n)。 和 …
LeetCode 力扣 55. 跳跃游戏
45题的时候已经见过这道题了,只不过之前是返回从第 0 个位置能跳到最后一个位置的最小步数,这道题是返回是否能跳过去。 leetCode Solution 中给出的是动态规划的解法,进行了一步一步的优化,但都也比较慢。不过,思路还是值得参考的,上边说的比较详细,这里就不啰嗦了。…
LeetCode 力扣 87. 扰乱字符串
把一个字符串按照树的形状,分成两部分,分成两部分...直到达到叶子节点。并且可以多次交换非叶子节点的两个子树,最后从左到右读取叶子节点,记为生成的字符串。题目是给两个字符串 S1 和 S2,然后问 S2 是否是 S1 经过上述方式生成的。 开始的时候,由于给出的图示很巧都是平均…
LeetCode 25. Reverse Nodes in k-Group
将一个链表,每 k 个倒置,最后一组不足 k 个就不倒置。 关于单链表倒置,我们在第 2 题就讨论过。有了单链表倒置,这道题无非就是用一个循环,每次将 k 个结点取下来,倒置后再接回去,然后再取 k 个,以此循环,到了最后一组如果不足 k 个,不做处理,直接返回头结点就可以了。…
LeetCode 力扣 44. 通配符匹配
字符串匹配,? 匹配单个任意字符,* 匹配任意长度字符串,包括空串。和第 10 题有些类似。 直接按照之前第 10 题,修改一下就可以了。 同样是用 dp[i][j] 表示所有的情况,然后一层一层的根据递推关系求出来。 时间复杂度:text 长度是 T,pattern 长度是 …
LeetCode 力扣 53. 最大子序和
给一个数组,找出一个连续的子数组,长度任意,和最大。 用一个二维数组 dp[ i ] [ len ] 表示从下标 i 开始,长度为 len 的子数组的元素和。 dp [ i ] [ len + 1 ] = dp[ i ] [ len ] + nums [ i + len - 1…
LeetCode 力扣 78. 子集
给一个数组,输出这个数组的所有子数组。 和 77 题解法三一个思想,想找出数组长度 1 的所有解,然后再在长度为 1 的所有解上加 1 个数字变成长度为 2 的所有解,同样的直到 n。 假如 nums = [ 1, 2, 3 ],参照下图。 参照这里。解法一的迭代法,是直接从结…
LeetCode 力扣 99. 恢复二叉搜索树
依旧是二分查找树的题,一个合法的二分查找树随机交换了两个数的位置,然后让我们恢复二分查找树。不能改变原来的结构,只是改变两个数的位置。二分查找树定义如下: 和 98 题有些像。这里的思路如下: 思想有了,代码很好写了。 参考 这里。 如果记得 98 题,我们判断是否是一个合法的…
leetCode 14 Longest Common Prefix
我们把所有字符串垂直排列,然后一列一列的比较,直到某一个字符串到达结尾或者该列字符不完全相同。 时间复杂度:最坏的情况就是 n 个 长度为 m 的完全一样的字符串,假设 S 是所有字符的和,那么 S = m * n,时间复杂度就是 O(S)。当然正常情况下并不需要比较所有字符串…
下一页