首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
leetcode详细题解
windliang
创建于2022-09-04
订阅专栏
包含多解法,网站:https://leetcode.wang
等 2 人订阅
共129篇文章
创建于2022-09-04
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
LeetCode 力扣 50. Pow(x, n)
就是求幂次方。 求幂次方,用最简单的想法,就是写一个 for 循环累乘。 至于求负幂次方,比如 ,可以先求出 ,然后取倒数, ,就可以了。 但这样的话会出问题,之前在29题讨论过,问题出在 n = - n 上,因为最小负数 取相反数的话,按照计算机的规则,依旧是,所以这种情况需…
LeetCode 力扣 75. 颜色分类
给一个数组,含有的数只可能 0,1,2 中的一个,然后把这些数字从小到大排序。 题目下边的 Follow up 提到了一个解法,遍历一次数组,统计 0 出现的次数,1 出现的次数,2 出现的次数,然后再遍历数组,根据次数,把数组的元素改成相应的值。当然我们只需要记录 0 的次数…
LeetCode 力扣 98. 验证二叉搜索树
输入一个树,判断该树是否是合法二分查找树,95题做过生成二分查找树。二分查找树定义如下: 开始的时候以为可以很简单的用递归写出来。想法是,左子树是合法二分查找树,右子树是合法二分查找树,并且根节点大于左孩子,小于右孩子,那么当前树就是合法二分查找树。代码如下: 当然,这个解法没…
leetCode 4 Median of Two Sorted Arrays
已知两个有序数组,找到两个数组合并后的中位数。 简单粗暴,先将两个数组合并,两个有序数组的合并也是归并排序中的一部分。然后根据奇数,还是偶数,返回中位数。 其实,我们不需要将两个数组真的合并,我们只需要找到中位数在哪里就可以了。 开始的思路是写一个循环,然后里边判断是否到了中位…
LeetCode 力扣 130. 被围绕的区域
有一点点像围棋,把被 X 围起来的 O 变成 X,边界的 O 一定不会被围起来。如果 O 和边界的 O 连通起来,那么这些 O 就都算作不被围起来,比如下边的例子。 上边的例子就只需要变化 1 个 O 。 把相邻的O 看作是连通的图,然后从每一个 O 开始做 DFS。 如果遍历…
LeetCode 19. Remove Nth Node From End of List
题目描述(中等难度)给定一个链表,将倒数第n个结点删除。解法一删除一个结点,无非是遍历链表找到那个结点前边的结点,然后改变下指向就好了。但由于它是链表,它的长度我们并不知道,我们得先遍历一遍得到它的长
LeetCode 26. Remove Duplicates from Sorted Array
返回非重复数字的个数,并且把 nums 里重复的数字也去掉。 例如,nums = [ 1, 1, 2 ] ,那么就返回 2 ,并且把 nums 变成 [ 1, 2 ]。 这道题,蛮简单的,但是自己写的时候多加了个 while 循环,但和给出的 Solution 本质还是一样的。…
LeetCode 力扣 48. 旋转图像
将一个矩阵顺时针旋转 90 度,并且不使用额外的空间。大概属于找规律的题,没有什么一般的思路,观察就可以了。 可以先转置,然后把每列对称交换交换一下。 时间复杂度:O(n²)。 空间复杂度:O(1)。 也可以先以横向的中轴线为轴,对称的行进行交换,然后再以对角线交换。 我把这个…
LeetCode 力扣 84. 柱状图中最大的矩形
给一个柱状图,输出一个矩形区域的最大面积。 以题目给出的例子为例,柱形图高度有 1, 2, 3, 5, 6,我们只需要找出每一个高度对应的最大的面积,选出最大的即可。如果求高度为 3 的面积最大的,我们只需要遍历每一个高度,然后看连续的大于等于 3 的柱形有几个,如果是 n 个…
LeetCode 力扣 96. 不同的二叉搜索树
和 95 题一样,只不过这道题不需要输出所有的树,只需要输出所有可能的二分查找树的数量。所以完全按照 95 题思路写,大家可以先到 95 题看一看。 下边是 95 题的分析。 对于这道题,我们会更简单些,只需要返回树的数量即可。求当前根的数量,只需要左子树的数量乘上右子树。 受…
LeetCode 力扣 107. 二叉树的层次遍历 II
树的层次遍历,和 102 题 的不同之处是,之前输出的数组顺序是从根部一层一层的输出,现在是从底部,一层一层的输出。 把 102 题 的DFS贴过来看一下。 之前我们根据 level 得到数组的位置,然后添加。 此外还有句代码要改。 综上,只要改了这两处就可以了。 102 题 …
leetCode 1 Two Sum
给定一个数组和一个目标和,从数组中找两个数字相加等于目标和,输出这两个数字的下标。 简单粗暴些,两重循环,遍历所有情况看相加是否等于目标和,如果符合直接输出。 在上边的解法中看下第二个 for 循环步骤。 第二层 for 循环无非是遍历所有的元素,看哪个元素等于 sub ,时间…
LeetCode 18. 4 Sum
和3Sum类似,只不过是找四个数,使得和为 target,并且不能有重复的序列。 如果之前没有做过3Sum可以先看看,自己在上边的基础上加了一个循环而已。 时间复杂度:O(n³)。 空间复杂度:O(N),最坏情况,即 N 是指 n 个元素的排列组合个数,即 ,用来保存结果。 完…
LeetCode 力扣 65. 有效数字
给定一个字符串,判断它是否代表合法数字,当然题目描述的样例不够多,会使得设计算法中出现很多遗漏的地方,这里直接参考评论区@yeelan0319给出的更多测试样例。 什么叫直接法呢,就是没有什么通用的方法,直接分析题目,然后写代码,直接贴两个 leetcode Disscuss …
LeetCode 力扣 97. 交错字符串
在两个字符串 s1 和 s2 中依次取字母,问是否可以组成 S3。什么意思呢?比如 s1 = abc , s2 = de,s3 = abdce。 s1 取 1 个 字母得到 a,s1 再取个字母得到 ab,s2 取个字母得到 abd, s1 取 1 个 字母得到 abdc, s…
LeetCode 力扣 106. 从中序与后序遍历序列构造二叉树
根据二叉树的中序遍历和后序遍历还原二叉树。 可以先看一下 105 题,直接在 105 题的基础上改了,大家也可以先根据 105 题改一改。 105 题给的是先序遍历和中序遍历,这里把先序遍历换成了后序遍历。 区别在于先序遍历的顺序是 根节点 -> 左子树 -> 右子树。 后序遍…
LeetCode 力扣 108. 将有序数组转换为二叉搜索树
给一个升序数组,生成一个平衡二叉搜索树。平衡二叉树定义如下: 如果做了 98 题 和 99 题,那么又看到这里的升序数组,然后应该会想到一个点,二叉搜索树的中序遍历刚好可以输出一个升序数组。 所以题目给出的升序数组就是二叉搜索树的中序遍历。 根据中序遍历还原一颗树,又想到了 1…
LeetCode 16. 3 Sum Closest
和上一道题很类似,只不过这个是给一个目标值,找三个数,使得他们的和最接近目标值。 遍历所有的情况,然后求出三个数的和,和目标值进行比较,选取差值最小的即可。本以为时间复杂度太大了,神奇的是,竟然 AC 了。 时间复杂度:O(n³),三层循环。 空间复杂度:O(1),常数个。 受…
LeetCode 17. Letter Combinations of a Phone Number
题目描述(中等难度)给一串数字,每个数可以代表数字键下的几个字母,返回这些数字下的字母的所有组成可能。解法一定义相乘自己想了用迭代,用递归,都理不清楚,灵机一动,想出了这个算法。把字符串"23"看成[
LeetCode 力扣 40. 组合总和 II
和上一道题非常像了,区别在于这里给的数组中有重复的数字,每个数字只能使用一次,然后同样是给出所有和等于 target 的情况。 只需要在上题的基础上改一下就行了。直接看代码吧。 看到这里,想法很棒,为了解决重复的情况,我们可以先把数组先排序,这样就好说了。 怎么去更改上题的算法…
下一页