中等题
文章平均质量分 52
【LeetCode-中等题】
今天你写代码了吗??
好记性不如烂笔头!
展开
-
【LeetCode-中等题】654.最大二叉树
【代码】【LeetCode-中等题】106. 从中序与后序遍历序列构造二叉树。原创 2023-09-25 11:31:12 · 250 阅读 · 0 评论 -
【LeetCode-中等题】106. 从中序与后序遍历序列构造二叉树
前序遍历子树的范围(根据后序的根区分)左边界。前序遍历子树的范围(根据后序的根区分)右边界。只需确定三个变量即可。原创 2023-09-24 18:09:18 · 185 阅读 · 0 评论 -
【LeetCode-中等题】113. 路径总和 II
解题核心 就是要知道递归在哪里结束 ,收货结果在哪里收获,哪些变量需要回溯,哪些不需要回溯。原创 2023-09-24 14:09:22 · 129 阅读 · 0 评论 -
【LeetCode-中等题】513. 找树左下角的值
在递归遍历到叶子结点时,对比此时的节点深度,若当前节点深度大于当前最大深度,就更新value值,最后记录下的value即为最下最左的节点值。层序遍历 按照从右向左加入每层节点的值,这样每层取出节点的时候,最后记录的就是每一层最左的节点值,然后直到最后一层,记录下最后一层最左的值。不带值(深度)递归(递归+原创 2023-09-23 13:23:15 · 75 阅读 · 0 评论 -
【LeetCode-中等题】 222. 完全二叉树的节点个数
例如:二叉树的前序遍历(维护一个全局变量)递归无返回值。一定要画图 模拟递归过程。原创 2023-09-21 20:51:50 · 280 阅读 · 0 评论 -
【LeetCode-中等题】117. 填充每个节点的下一个右侧节点指针 II
【代码】【LeetCode-中等题】117. 填充每个节点的下一个右侧节点指针 II。原创 2023-09-20 17:42:00 · 227 阅读 · 0 评论 -
【LeetCode-中等题】116. 填充每个节点的下一个右侧节点指针
while(!i < size;i++){//第二种链接方法 : 直接让每层不是最后一个的节点指向此时队首元素//每层最后一个指向 null//不是最后一个的节点指向此时队首元素。原创 2023-09-20 16:32:45 · 244 阅读 · 0 评论 -
【LeetCode-中等题】515. 在每个树行中找最大值
本题解题过程大体思路和二叉树的层序遍历没有什么不同。原创 2023-09-20 15:53:26 · 172 阅读 · 0 评论 -
【LeetCode-中等题】429. N 叉树的层序遍历
思路和二叉树的层序遍历一样,这一题的关键在于取出每个节点的孩子。原创 2023-09-20 15:40:34 · 237 阅读 · 1 评论 -
【LeetCode-中等题】107. 二叉树的层序遍历 II
这样就无须将最后的结果res做reverse翻转了。原创 2023-09-19 19:09:25 · 219 阅读 · 0 评论 -
【LeetCode-中等题】347. 前 K 个高频元素
优先队列 按照队列中的数组的第二个元素从。优先队列 按照队列中的数组的第二个元素从。原创 2023-09-18 21:51:01 · 134 阅读 · 0 评论 -
【LeetCode-中等题】150. 逆波兰表达式求值
【代码】【LeetCode-简单题】150. 逆波兰表达式求值。原创 2023-09-18 13:29:55 · 143 阅读 · 0 评论 -
【LeetCode-中等题】 151. 反转字符串中的单词
【代码】【LeetCode-中等题】 151. 反转字符串中的单词。原创 2023-09-15 11:24:48 · 215 阅读 · 0 评论 -
【LeetCode-中等题】 454. 四数相加 II
因为本题特殊在和是为0 的 所以后面的两个数组之和取反 如果能在map的key中存在,说明存在和为0 的情况,则结果集数量+1。哈希表记录前两个数组的和以及出现次数,然后记录后面两个数组的和,成功将四数之和转换为两数之和。原创 2023-09-14 13:05:32 · 456 阅读 · 0 评论 -
【LeetCode-中等题】15. 三数之和
将四数之和 借助哈希表简化成两数之和。原创 2023-09-14 11:45:10 · 138 阅读 · 0 评论 -
【LeetCode-中等题】18. 四数之和
那么这题也是同理的,我们需要做的事就是定住2个数,要用两个for循环定住两个数,然后设置两个前后指针来根据sum的值和目标值比较来滑动指针。区别在于,三数之和只需要用一个for循环定住一个数,然后设置两个前后指针来根据sum的值和目标值比较来滑动指针。里面的处理细节很多需要注意,提前处理一些不可能满足条件的情况,减少时间复杂度。原创 2023-09-14 10:58:05 · 196 阅读 · 0 评论 -
【LeetCode-中等题】707. 设计链表
【代码】【LeetCode-中等题】707. 设计链表。原创 2023-09-12 09:59:53 · 129 阅读 · 0 评论 -
【LeetCode-中等题】904. 水果成篮
题目的意思就是:找至多包含两种元素的最长子串,返回其长度。原创 2023-09-11 15:26:02 · 239 阅读 · 0 评论 -
【LeetCode-中等题】209. 长度最小的子数组
两种方式都可以 一定要画图理解。原创 2023-09-11 13:57:19 · 214 阅读 · 1 评论 -
【LeetCode-中等题】34. 在排序数组中查找元素的第一个和最后一个位置
一定要结合画图来理解。原创 2023-09-10 12:55:23 · 266 阅读 · 1 评论 -
【LeetCode-中等题】79. 单词搜索
【代码】【LeetCode-中等题】79. 单词搜索。原创 2023-09-08 19:24:11 · 482 阅读 · 0 评论 -
【LeetCode-中等题】22. 括号生成
若左括号 大于n 或者 左括号数量大于右括号数量 不符合题目要求 结束递归剪枝。递归入口 空子结果集,左括号数目(初始为0),右括号数目(初始为0)若 左括号数目 和 右括号数目都等于n 说明符合条件 结束递归。原创 2023-09-08 12:51:19 · 295 阅读 · 0 评论 -
【LeetCode-中等题】40. 组合总和 II
【代码】【LeetCode-中等题】40. 组合总和 II。原创 2023-09-07 19:53:41 · 226 阅读 · 0 评论 -
【LeetCode-中等题】39. 组合总和
但同一个元素可以被无限次取,说明每次递归中的for循环的开始位置就是自己。这题的nums数组里面不存在重复元素,所以也就无需做去重操作。原创 2023-09-07 19:30:56 · 304 阅读 · 0 评论 -
【LeetCode-中等题】17. 电话号码的字母组合
【代码】【LeetCode-中等题】17. 电话号码的字母组合。原创 2023-09-07 16:25:55 · 246 阅读 · 0 评论 -
【LeetCode-中等题】90. 子集 II
收获结果是在递归结束末尾,而本题去重收获结果是在递归开始的时候,并且去重操作的条件都是一样的,区别就在于for循环 子集是从startIndex开始的,而 组合都是从0开始的。本题最大的不同就在于。原创 2023-09-07 12:08:09 · 252 阅读 · 0 评论 -
【LeetCode-中等题】78. 子集
根据nums[1,2,3] 可以画出树图,收获的结果集为所有节点,并且根据startIndex 每次只能取startIndex 后面的数,这样可以避免取到【1,2】 【2,1】这样的集合 这两个集合其实是同一个子集,所以每次递归都让startIndex +1 让递归后的只能取startIndex 后面的数。注意:这里的nums数组里面的元素是各不相同的,所以不存在去重操作。并且注意回溯(在递归后删除递归前加入的数)原创 2023-09-06 20:35:16 · 642 阅读 · 0 评论 -
【LeetCode-中等题】47. 全排列 II
在每次进行递归的时候,不仅需要判断标志数组是否为true(跳过此次),还要在i>0的,并且后一个位置的元素如果和前面一个元素相同,并且标志位为false(代表未处理),那么也跳过此次递归,最后同样是递归和回溯(和不去重的代码一样)原创 2023-09-06 13:00:32 · 385 阅读 · 0 评论 -
【LeetCode-中等题】46. 全排列
【代码】【LeetCode-中等题】46. 全排列。原创 2023-09-05 16:58:31 · 567 阅读 · 0 评论 -
【LeetCode-中等题】208. 实现 Trie (前缀树)
而前缀匹配时,匹配成功后直接返回true 因为不需要往下匹配了。相比较上面的用数组构建26叉树,其实也可以采用哈希表存储子节点。注意:全局匹配匹配完直接返回插入时的标志位。匹配到空trie都统统直接返回false。原创 2023-09-05 13:06:15 · 815 阅读 · 0 评论 -
【LeetCode-中等题】210. 课程表 II
这一题是在207题的基础上,要统计拓扑排序的顺序集合,所以只需要在207的基础上加入一个将拓扑排序的节点输出即可(有环无拓扑排序)相比较207题 ,加入一个数组,用于统计拓扑排序节点,相比较207题 ,加入一个数组,用于统计拓扑排序节点,其中拓扑排序的顺序就为队列的出队顺序。其中使用一个栈来记录遍历完的节点。拓扑排序的顺序就为栈的出栈顺序。原创 2023-09-04 12:03:04 · 289 阅读 · 0 评论 -
【LeetCode-中等题】207. 课程表
每取出一个入度为0 的元素,就让课程号总数-1,若循环结束(队列为空),课程号总数==0,说明拓扑排序得到的排序序列 = 课程号总数 说明该有向图不存在环,也就满足题目可以完成全部课程,否则有环,就必然不可能完成。从课程号中取出入度为0的元素,加入队列中,然后根据课程号集合,将指向的课程号子集合中的课程号的入度-1,循环结束(队列为空)构造课程号集合,集合中每个元素同样为子集合,存储着课程号指向的课程号(记录出度指向,也就是指向元素的入度)先将题目的数组按照题目意思,转为有向图。原创 2023-09-04 10:25:36 · 219 阅读 · 0 评论 -
【LeetCode-中等题】994. 腐烂的橘子
在该题:假设图中只有一个腐烂的橘子,它每分钟向外拓展,腐烂上下左右相邻的新鲜橘子,那么下一分钟,就是这些被腐烂的橘子再向外拓展腐烂相邻的新鲜橘子,这与广度优先搜索的过程均一一对应,上下左右相邻的新鲜橘子就是该腐烂橘子尝试访问的同一层的节点,路径长度就是新鲜橘子被腐烂的时间。广度优先搜索,就是从起点出发,每次都尝试访问同一层的节点,如果同一层都访问完了,再访问下一层,最后广度优先搜索找到的路径就是从起点开始的最短合法路径。原创 2023-09-03 14:05:30 · 836 阅读 · 0 评论 -
【LeetCode-中等题】200. 岛屿数量
当遍历指针指向了一个1的网格,count++,就率先将该位置的绝对坐标(行*总列数+列)存入队列中,然后将该位置设置为0,接着进行while循环,从队列取出绝对位置,转换为x y坐标,然后根据x y 坐标 去判断当前位置的上下左右是否有1,是的话,就加入队列,并且置为0,直到循环结束(while循环做的事,就是在判断从对列拿出的位置周围四个方向是否有1,有就全部置为0,持续处理队列弹出的元素)因为队列只能存一个整数,所以只能先存绝对位置,到时候弹出这个绝对位置的值,转换为行列就可以了。原创 2023-09-02 21:44:53 · 247 阅读 · 0 评论 -
【LeetCode-中等题】236. 二叉树的最近公共祖先
解题的核心就是:采用后序遍历。原创 2023-08-31 17:00:30 · 395 阅读 · 0 评论 -
【LeetCode-中等题】437. 路径总和 III
【代码】【LeetCode-中等题】437. 路径总和 III。原创 2023-08-31 13:42:21 · 456 阅读 · 0 评论 -
【LeetCode-中等题】105. 从前序与中序遍历序列构造二叉树
这个根据前序遍历的第一个节点(根节点)去中序遍历中找左右子树的范围,可以根据前序遍历的根节点值循环去中序遍历中找,因为题目保证节点不存在重复,所以可以根据中序遍历维护一个节点和下标的哈希表,这个前序遍历的根节点,可以轻松的找到中序遍历的根节点,从而在前序遍历中确定左右子树的范围。解题的关键在与找根节点和 左子树和右子树在前序遍历数组的范围,一步步找出根节点,然后划分出左右子树,然后让根节点指向左右子树,然后又对左右子树左重复动作。原创 2023-08-31 12:08:30 · 595 阅读 · 0 评论 -
【LeetCode-中等题】114. 二叉树展开为链表
【代码】【LeetCode-中等题】114. 二叉树展开为链表。原创 2023-08-30 16:10:27 · 310 阅读 · 0 评论 -
【LeetCode-中等题】199. 二叉树的右视图
/ 方法一 :层序 + 集合(取每层子集合最后一个元素)// while(!i原创 2023-08-30 14:54:35 · 747 阅读 · 0 评论 -
【LeetCode-中等题】230. 二叉搜索树中第K小的元素
二叉树中序遍历得到的值序列是递增有序的 那只要栈每次弹出一个元素时 就让k-1(直到k=0) 例如要第1小的数 那么其实就是中序遍历栈弹出的第一个元素(k= k-1 ===0,立马返回第一次pop的数)借助一个list集合来接收有序的节点 然后再按照k去list集合区第k小的数。思想很简单,就是通过层序遍历将节点都加到List集合中,然后调用。原创 2023-08-30 13:32:12 · 635 阅读 · 0 评论