首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
leetcode详细题解
windliang
创建于2022-09-04
订阅专栏
包含多解法,网站:https://leetcode.wang
等 2 人订阅
共129篇文章
创建于2022-09-04
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
LeetCode 力扣 100. 相同的树
判断两个二叉树是否相同。 这道题就很简单了,只要把两个树同时遍历一下,遍历过程中判断数值是否相等或者同时为 null 即可。而遍历的方法,当然可以选择 DFS 里的先序遍历,中序遍历,后序遍历,或者 BFS。 当然实现的话,可以用递归,用栈,或者中序遍历提到的 Morris。也…
LeetCode 力扣 112. 路径总和
给定一个sum,判断是否有一条从根节点到叶子节点的路径,该路径上所有数字的和等于sum。 这道题其实和 111 题 是一样的,大家可以先看 111 题 的分析,这道题无非是把 111 题 递归传递的depth改为了sum的传递。 如果不仔细分析题目,代码可能会写成下边的样子。 …
leetCode 7 Reverse Integer
很简单,就是输入整数,输出它的倒置。 第一反应就是, 取余得到个位数,然后除以 10 去掉个位数,然后用一个变量保存倒置的数。 然后似乎不是那么理想。 为什么呢?倒置过来不应该是 9646324351 吗。其实题目里讲了,int 的范围是 ?[-2^{31} ,2^{31}-…
LeetCode 力扣 113. 路径总和 II
112 题 的升级版,给定一个sum,输出从根节点开始到叶子节点,和为sum 的所有路径可能。 直接在 112 题 的基础上改了,解法没有新内容,大家可以过去看一看。 112 题 的解法是下边的样子。 这里的话我们需要一个ans变量来保存所有结果。一个temp变量来保存遍历的路…
LeetCode 力扣 114. 二叉树展开为链表
把一个二叉树展开成一个链表,展开顺序如图所示。 可以发现展开的顺序其实就是二叉树的先序遍历。算法和 94 题 中序遍历的 Morris 算法有些神似,我们需要两步完成这道题。 可以看图理解下这个过程。 代码的话也很好写,首先我们需要找出左子树最右边的节点以便把右子树接过来。 题…
LeetCode 力扣 115. 不同的子序列
给定两个字符串 S 和T,从 S 中选择字母,使得刚好和 T 相等,有多少种选法。 S 中的每个字母就是两种可能选他或者不选他。我们用递归的常规思路,将大问题化成小问题,也就是分治的思想。 如果我们求 S[0,S_len - 1] 中能选出多少个 T[0,T_len - 1],…
LeetCode 力扣 68. 文本左右对齐
一个句子,和一个长度表示一行最长的长度,然后对齐文本,有下边几个规则。 一行如果只能放下一个单词,该单词放在最左边,然后空格补齐,例如 "acknowledgement#####",这里只是我为了直观,# 表示空格,题目并没有要求。 一行如果有多个单词,最左边和最右边不能有空格…
LeetCode 力扣 85. 最大矩形
给一个只有 0 和 1 的矩阵,输出一个最大的矩形的面积,这个矩形里边只含有 1。 参考这里,遍历每个点,求以这个点为矩阵右下角的所有矩阵面积。如下图的两个例子,橙色是当前遍历的点,然后虚线框圈出的矩阵是其中一个矩阵。 怎么找出这样的矩阵呢?如下图,如果我们知道了以这个点结尾的…
LeetCode 力扣 103. 二叉树的锯齿形层次遍历
和 102 题 类似,二叉树的层次遍历。只不过这题要求,第 1 层从左到右,第 2 层从右到左,第 3 层从左到右,第 4 层从右到左,交替进行。 大家可以先做下 102 题 吧,直接在 102 题的基础上进行修改即可。从左到右和从右到左交替,所以我们只需要判断当前的 leve…
LeetCode 力扣 111. 二叉树的最小深度
返回从根节点到叶子节点最小深度。 和 104 题 有些像,当时是返回根节点到叶子节点的最大深度。记得当时的代码很简单。 这道题是不是只要把Math.max,改成Math.min就够了。 根据代码走一遍,root.left返回 1,root.right返回 2,选较小的1,加上 …
LeetCode 力扣 133. 克隆图
复制一个图,图的节点定义如下。 neighbors 是一个装 Node 的 list ,因为对象的话,java 变量都存储的是引用,所以复制的话要新 new 一个 Node 放到 neighbors。 这个题其实就是对图进行一个遍历,通过 BFS 或者 DFS。需要解决的问题就…
LeetCode 力扣 138. 复制带随机指针的链表
给一个链表,返回复制后的链表。链表节点相对于普通的多了一个 random 指针,会随机指向链表内的任意节点或者指向 null。 这道题其实和 133 题 复制一个图很类似,这里的话就是要解决的问题就是,当更新当前节点的 random 指针的时候,如果 random 指向的是很后…
LeetCode 27. Remove Element
和上一题类似,只不过这个是去除给定的值,看起来还更简单些。 例如给了 nums = [ 3, 2, 2, 3 ],val = 3, 然后我们返回 len = 2,并且 nums 修改为 [ 2, 2 ] 。 和上道题一样,我们利用快慢指针,此外我们还得用下反向的思维。快指针 f…
LeetCode 力扣 118. 杨辉三角
其实就是杨辉三角,当前元素等于上一层的两个元素的和。 用两层循环,注意一下我们下标是从 0 开始还是从 1 开始,然后就可以写出来了。 好像有一段时间没有碰到简单题了,哈哈。
LeetCode 力扣 131. 分割回文串
给一个字符串,然后在任意位置切割若干次,保证切割后的每个字符串都是回文串。输出所有满足要求的切割结果。 将大问题分解为小问题,利用小问题的结果,解决当前大问题。 这道题的话,举个例子。 然后中间的过程求 abb 的所有结果,求 aab 的所有结果等等,就可以递归的去求。递归出口…
LeetCode 力扣 81. 搜索旋转排序数组 II
33题的升级版,数组的操作没有变,所谓的旋转数组,就是把有序数组前边若干个数字移动到末尾。区别在于这道题出现了重复的数字,同样是找 target。 把数组遍历一遍,然后依次判断数字是否相等的解法,当然就不用说了。这里直接在33 题解法三的基础上去修改。33 题算法基于一个事实,…
LeetCode 力扣 38. 外观数列
初始值第一行是 1。 第二行读第一行,1 个 1,去掉个字,所以第二行就是 11。 第三行读第二行,2 个 1,去掉个字,所以第三行就是 21。 第四行读第三行,1 个 2,1 个 1,去掉所有个字,所以第四行就是 1211。 第五行读第四行,1 个 1,1 个 2,2 个 1…
LeetCode 力扣 60. 第k个排列
又是一道全排列的题,之前在31题,46题,也讨论过全排列问题的一些解法。这道题的话,是给一个 n,不是输出它的全排列,而是把所有组合从从小到大排列后,输出第 k 个。 以 n = 4 为例,可以结合下图看一下。因为是从小到大排列,那么最高位一定是从 1 到 4。然后可以看成一组…
LeetCode 力扣 136. 只出现一次的数字
所有数字都是成对出现的,只有一个数字是落单的,找出这个落单的数字。 题目要求线性复杂度内实现,并且要求没有额外空间。首先我们考虑假如没有空间复杂度的限制。 这其实就只需要统计每个数字出现的次数,很容易想到去用 HashMap 。 遍历一次数组,第一次遇到就将对应的 key 置为…
LeetCode 力扣 34. 在排序数组中查找元素的第一个和最后一个位置
找到目标值的第一次出现和最后一次出现的位置,同样要求 log ( n ) 下完成。 先分享 leetcode 提供的两个解法。 从左向右遍历,一旦出现等于 target 的值就结束,保存当前下标。如果从左到右没有找到 target,那么就直接返回 [ -1 , -1 ] 就可以…
下一页