首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
leetcode详细题解
windliang
创建于2022-09-04
订阅专栏
包含多解法,网站:https://leetcode.wang
等 2 人订阅
共129篇文章
创建于2022-09-04
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
LeetCode 29. Divide Two Integers
两个数相除,给出商。不能用乘法,除法和模操作。 本来觉得这道题蛮简单的,记录下自己的坎坷历程。 先确定商的符号,然后把被除数和除数通通转为正数,然后用被除数不停的减除数,直到小于除数的时候,用一个计数遍历记录总共减了多少次,即为商了。 确定商的符号的时候,以及返回最终结果的时候…
LeetCode 力扣 39. 组合总和
给几个数字,一个目标值,输出所有和等于目标值的组合。 参考这里 ,就是先向前列举所有情况,得到一个解或者走不通的时候就回溯。和37题有异曲同工之处,也算是回溯法很典型的应用,直接看代码吧。 参考这里。动态规划的关键就是找到递进关系,看到了下边的评论想通的。 我们用一个 opt …
LeetCode 力扣 66. 加一
数组代表一个数字,[ 1, 2, 3 ] 就代表 123,然后给它加上 1,输出新的数组。数组每个位置只保存 1 位,也就是 0 到 9。 先用递归,好理解一些。 时间复杂度:O(n)。 上边的递归,属于尾递归,完全没必要压栈,直接改成迭代的形式吧。 时间复杂度:O(n)。 很…
LeetCode 力扣 88. 合并两个有序数组
给两个有序数组,把第二个数组合并到第一个数组中,保持有序。可以注意到第一个数组已经为我们多开辟了第二个数组所需要的空间。 简单粗暴,nums1 作为被插入的数组,然后遍历 nums2。用两个指针 i 和 j ,i 指向 nums1 当前判断的数字,j 指向 num2 当前遍历的…
LeetCode 力扣 91. 解码方法
每个数字对应一个字母,给一串数字,问有几种解码方式。例如 226 可以有三种,2|2|6,22|6,2|26。 很容易想到递归去解决,将大问题化作小问题。 比如 232232323232。 对于第一个字母我们有两种划分方式。 所以,如果我们分别知道了上边划分的右半部分 3223…
LeetCode 力扣 110. 平衡二叉树
直接按照定义来吧,并且多定义一个求高度的函数,之前在 104 题 做过。 大家觉不觉得解法一怪怪的,有一种少了些什么的感觉,自己写之前就有这种感觉,写完以后仔细分析了一下。 当我们求左子树的高度时,同样是利用了递归去求它的左子树的高度和右子树的高度。 递归的判断左子树和右子树是…
LeetCode 力扣 117. 填充每个节点的下一个右侧节点指针 II
给定一个二叉树,然后每个节点有一个 next 指针,将它指向它右边的节点。和 116 题 基本一样,区别在于之前是满二叉树。 直接把 116 题 题的代码复制过来就好,一句也不用改。 利用一个栈将下一层的节点保存。通过pre指针把栈里的元素一个一个接起来。 当然题目要求了空间复…
LeetCode 力扣 79. 单词搜索
意思就是从某个字符出发,然后它可以向左向右向上向下移动,走过的路径构成一个字符串,判断是否能走出给定字符串的 word ,还有一个条件就是走过的字符不能够走第二次。 比如 SEE,从第二行最后一列的 S 出发,向下移动,再向左移动,就走出了 SEE。 ABCB,从第一行第一列的…
LeetCode 力扣 54. 螺旋矩阵
从第一个位置开始,螺旋状遍历二维矩阵。 可以理解成贪吃蛇,从第一个位置开始沿着边界走,遇到边界就转换方向接着走,直到走完所有位置。 时间复杂度:O(m * n),m 和 n 是数组的长宽。 空间复杂度:O(1)。 在 leetcode 的 solution 和 discuss …
LeetCode 力扣 77. 组合
给定 n ,k ,表示从 { 1, 2, 3 ... n } 中选 k 个数,输出所有可能,并且选出数字从小到大排列,每个数字只能用一次。 这种选数字很经典的回溯法问题了,先选一个数字,然后进入递归继续选,满足条件后加到结果中,然后回溯到上一步,继续递归。直接看代码吧,很好理解…
LeetCode 力扣 102. 二叉树的层次遍历
二叉树的层次遍历,输出一个 list 的 list。 这道题考的就是 BFS,我们可以通过 DFS 实现。只需要在递归过程中将当前 level 传入即可。 如果是顺序刷题,前边的 97 题, 98 题,101 题,都用到了 BFS ,应该很熟悉了。 之前我们用一个 while …
LeetCode 力扣 132.分割回文串 II
和 131 题 一样,可以在任意位置切割字符串,需要保证切割后的每个子串都是回文串。问最少需要切割几次。 和 131 题 用相同的分析方法即可。 大问题化小问题,利用小问题的结果,解决当前大问题。 举个例子。 然后中间的过程求 abb 的最小切割次数,求 aab 的最小切割次数…
LeetCode 33. Search in Rotated Sorted Array
开始的时候想复杂了,其实就是一个排序好的数组,把前边的若干的个数,一起移动到末尾就行了。然后在 log (n) 下找到给定数字的下标。 总的来说,log(n),我们肯定得用二分的方法了。 参考这里首先我们想一下变化前,正常的升序。我们怎么找给定的数字。 我们每次只关心中间位置的…
LeetCode 力扣 109. 有序链表转换二叉搜索树
和 108 题 是一样的,都是给定一个升序序列,然后生成二分平衡查找树。区别在于 108 题给定的是数组,这里给的是链表。 大家先看一下 108 题 吧,算法的关键是取到中间的数据做为根节点。而这里链表的话,由于不支持随机访问,所以会麻烦些。最简单的思路就是我们把链表先用线性表…
LeetCode 力扣 46.全排列
描述的很简单,就是给定几个数,然后输出他们所有排列的可能。 这是自己开始想到的一个方法,考虑的思路是,先考虑小问题怎么解决,然后再利用小问题去解决大问题。没错,就是递归的思路。比如说, 如果只有 1 个数字 [ 1 ],那么很简单,直接返回 [ [ 1 ] ] 就 OK 了。 …
LeetCode 力扣 51. N皇后
经典的 N 皇后问题。意思就是摆皇后的位置,每行每列以及对角线只能出现 1 个皇后。输出所有的情况。 比较经典的回溯问题了,我们需要做的就是先在第一行放一个皇后,然后进入回溯,放下一行皇后的位置,一直走下去,如果已经放的皇后的数目等于 n 了,就加到最后的结果中。然后再回到上一…
LeetCode 力扣 59. 螺旋矩阵 II
和 54题 差不多,54 题按照螺旋状遍历,这个是按照螺旋状生成二维数组。 直接按照 54题,贪吃蛇的走法来写,如果没做过可以看一下。 时间复杂度:O(n²)。 空间复杂度:O(1)。 这里看到了一个与众不同的想法,分享一下。 矩阵先添加 1 个元素,然后顺时针旋转矩阵,然后再…
LeetCode 力扣 64. 最小路径和
依旧是62题的扩展,这个是输出从左上角到右下角,路径的数字加起来和最小是多少。 依旧在62题代码的基础上改,大家可以先看下 62 題。 62 题中我们把递归 getAns 定义为,输出 (x,y)到 (m ,n ) 的路径数,如果记做 dp[x][y]。 那么递推式就是 dp[…
LeetCode 21. Merge Two Sorted Lists
题目描述(简单难度)合并两个有序链表。解法一迭代遍历两个链表。时间复杂度:O(m+n)。空间复杂度:O(1)。解法二递归参考这里时间复杂度:空间复杂度:总递归看起来,两个字,优雅!但是关于递归的时间复
LeetCode 力扣 71. 简化路径
生成一个绝对路径,把相对路径中 ".." 和 "." 都转换为实际的路径,此外,"///" 多余的 "/" 要去掉,开头要有一个 "/",末尾不要 "/"。 这道题,只要理解了题意,然后理一下就出来了。下面代码就不考虑空间复杂度了,多创建几个数组,代码会简洁一些。 这道题就是理…
下一页