![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode 算法学习
文章平均质量分 89
dreamtang
这个作者很懒,什么都没留下…
展开
-
代码随想录算法训练营第三十七天| 56. 合并区间、738. 单调递增的数字、968. 监控二叉树
以数组intervals表示若干个区间的集合,其中单个区间为。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].[[1,5]]区间 [1,4] 和 [4,5] 可被视为重叠区间。原创 2024-06-13 14:34:29 · 598 阅读 · 0 评论 -
代码随想录算法训练营第二十八天| 93. 复原 IP 地址、78. 子集、90. 子集 II
根据子集的元素个数来划分, n 个字符串组成的子集长度是从 0 ~ n. 同时对于长度为 m 的子集, 是由长度为 m - 1 的子集再添加元素组成.与求子集问题一致, 但是需要去重. 去重的关键在于, 如果前一个元素与自己相同, 表示自己与后面元素的组合都已经处理过了, 因此需要忽略自己.因此可以通过递归的方式, 从只有一个元素的子集, 添加新的元素组成更大的子集, 一直到处理到最后一个元素为止.和切割回文子串的思路有点像, 但是回文字符串子集在原字符串中是连续的, 这里的子集是不需要连续的.原创 2024-06-04 20:55:06 · 653 阅读 · 0 评论 -
代码随想录算法训练营第二十二天| 235. 二叉搜索树的最近公共祖先、701. 二叉搜索树中的插入操作、450. 删除二叉搜索树中的节点
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]6节点 2 和节点 8 的最近公共祖先是 6。2节点 2 和节点 4 的最近公共祖先是 2, 因为根据定义最近公共祖先节点可以为节点本身。原创 2024-05-30 15:28:08 · 737 阅读 · 0 评论 -
代码随想录算法训练营第二十一天| 530. 二叉搜索树的最小绝对差、501. 二叉搜索树中的众数、236. 二叉树的最近公共祖先
给你一个二叉搜索树的根节点root,返回。差值是一个正数,其数值等于两值之差的绝对值。11。原创 2024-05-28 22:25:31 · 1136 阅读 · 0 评论 -
代码随想录算法训练营第十五天| 二叉树的层序遍历、226. 翻转二叉树、101. 对称二叉树
当我们拿到一个数的头节点开始遍历的时候, 我们在单次循环中可以拿到三个节点: 头节点、头节点的左节点、头节点的右节点. 这时候是可以得到层序遍历的结果的. 但是当深度到达第三层的时候, 左侧的节点, 就无法链接到右侧的节点. 这可怎么办呢?原来只要拿一个队列保存住当前深度的所有节点, 遍历完成后生成下一层的节点列表就可以. 还是挺简单的.第 0 层的平均值为 3,第 1 层的平均值为 14.5,第 2 层的平均值为 11。,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。原创 2024-05-22 21:38:09 · 580 阅读 · 1 评论 -
代码随想录算法训练营第三十一天| 455. 分发饼干、376. 摆动序列、53. 最大子数组和
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子i,都有一个胃口值g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干j,都有一个尺寸s[j]。如果,我们可以将这个饼干j分配给孩子i,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。1你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足。所以你应该输出1。2。原创 2024-06-09 15:09:15 · 884 阅读 · 0 评论 -
代码随想录算法训练营第二十九天| 491. 非递减子序列、46. 全排列、47. 全排列 II
给你一个整数数组nums,找出并返回所有该数组中不同的递增子序列,递增子序列中。你可以按返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。[[4,4]]原创 2024-06-05 21:23:20 · 958 阅读 · 0 评论 -
代码随想录算法训练营第二十五天| 216. 组合总和 III、17. 电话号码的字母组合
题目:找出所有相加之和为n的k返回所有可能的有效组合的列表。该列表不能包含相同的组合两次,组合可以以任何顺序返回。= 3,= 7[[1,2,4]]没有其他符合的组合了。= 3,= 9没有其他符合的组合了。[]不存在有效的组合。在[1,9]范围内使用4个不同的数字,我们可以得到的最小和是1+2+3+4 = 10,因为10 > 1,没有有效的组合。原创 2024-06-02 18:07:30 · 681 阅读 · 0 评论 -
代码随想录算法训练营第二十四天| 77. 组合
给定两个整数n和k,返回范围[1, n]中所有可能的k个数的组合。你可以按返回答案。原创 2024-05-31 20:26:41 · 383 阅读 · 0 评论 -
代码随想录算法训练营第二十天| 617. 合并二叉树、654. 最大二叉树、700. 二叉搜索树中的搜索、98. 验证二叉搜索树
给你两棵二叉树:root1和root2。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,null 的节点将直接作为新二叉树的节点。返回合并后的二叉树。合并过程必须从两个树的根节点开始。原创 2024-05-27 22:43:26 · 938 阅读 · 0 评论 -
代码随想录算法训练营第十六天 | 104. 二叉树的最大深度 、559. N 叉树的最大深度、111. 二叉树的最小深度、222. 完全二叉树的节点个数、222. 完全二叉树的节点个数
【代码】代码随想录算法训练营第十六天 | 104. 二叉树的最大深度 、559. N 叉树的最大深度、111. 二叉树的最小深度、222. 完全二叉树的节点个数、222. 完全二叉树的节点个数。原创 2024-05-23 16:11:26 · 62 阅读 · 1 评论 -
代码随想录算法训练营第三十二天| 122. 买卖股票的最佳时机 II 、55. 跳跃游戏 、45. 跳跃游戏 II
给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候只能持有股票。你也可以先购买,然后在出售。返回你能获得的利润。7在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。原创 2024-06-09 16:55:02 · 659 阅读 · 0 评论 -
代码随想录算法训练营第三十天| 332. 重新安排行程、51. N 皇后、37. 解数独
题目:给你一份航线列表tickets,其中表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。所有这些机票都属于一个从JFK(肯尼迪国际机场)出发的先生,所以该行程必须从JFK开始。如果存在多种有效的行程,请你按字典排序返回最小的行程组合。假定所有机票至少存在一种合理的行程。且所有的机票 必须都用一次 且 只能用一次。另一种有效的行程是 ["JFK","SFO","ATL","JFK","ATL","SFO"] ,但是它字典排序更大更靠后。toi。原创 2024-06-07 01:58:24 · 574 阅读 · 0 评论 -
代码随想录算法训练营第二十七天| 39. 组合总和、40. 组合总和 II、131. 分割回文串
题目:给你一个的整数数组candidates和一个目标整数target,找出candidates中可以使数字和为目标数target的 所有,并以列表形式返回。你可以按返回这些组合。candidates中的数字可以。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为target的不同组合数少于150个。2 和 3 可以形成一组候选,2 + 2 + 3 = 7。注意 2 可以使用多次。7 也是一个候选, 7 = 7。仅有这两种组合。[]原创 2024-06-04 00:07:09 · 691 阅读 · 0 评论 -
代码随想录算法训练营第二十三天| 669. 修剪二叉搜索树、108. 将有序数组转换为二叉搜索树、538. 把二叉搜索树转换为累加树
题目:给你二叉搜索树的根节点root,同时给定最小边界low和最大边界high。通过修剪二叉搜索树,使得所有节点的值在中。修剪树改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。可以证明,存在。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。原创 2024-05-31 00:05:06 · 769 阅读 · 0 评论 -
代码随想录算法训练营第十八天| 513. 找树左下角的值、112. 路径总和、113. 路径总和 II、106. 从中序与后序遍历序列构造二叉树、105. 从前序与中序遍历序列构造二叉树
给定一个二叉树的root,请找出该二叉树的节点的值。假设二叉树中至少有一个节点。17。原创 2024-05-27 21:30:27 · 679 阅读 · 0 评论 -
代码随想录算法训练营第十七天 | 110. 平衡二叉树、257. 二叉树的所有路径、404. 左叶子之和
给定一个二叉树,判断它是否是平衡二叉树truefalseroot = []true[0, 5000]原创 2024-05-24 18:37:23 · 751 阅读 · 0 评论 -
代码随想录算法训练营第十四天| 144. 二叉树的前序遍历、
*** }* }*/原创 2024-05-21 21:08:59 · 227 阅读 · 1 评论 -
代码随想录算法训练营第十三天| 239. 滑动窗口最大值
给你一个整数数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。滑动窗口的位置 最大值[1]原创 2024-05-20 23:42:52 · 789 阅读 · 1 评论 -
代码随想录算法训练营第十一天| 20. 有效的括号、1047. 删除字符串中的所有相邻重复项
例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。新建一个栈结构, 从头开始遍历算数运算字符串, 当遇到非操作符时, 直接压入栈中. 当遇到操作符时, 从栈中弹出两个字符, 对字符串所表示的数字进行算数运算后, 将结果压入栈中. 直到算数运算字符串遍历完成.2. 遍历的过程中发现有匹配不上的符号, 因此不匹配.原创 2024-05-19 12:27:09 · 984 阅读 · 1 评论 -
代码随想录算法训练营第六天| 242. 有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。sttrues= "rat",t= "car"falset如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?原创 2024-05-13 22:53:17 · 596 阅读 · 1 评论 -
代码随想录算法训练营第九天| 28. 找出字符串中第一个匹配项的下标、459. 重复的子字符串
这里可以想一下, 当ss掐头去尾后, ss‘ 包含 s 的部分, 一定是在ss 的中间(不包括头尾), 并且新的 和 s 相等的子串, 头在第一个 s 的尾巴左边, 尾巴在第一个 s 的尾巴右边. 我们把子串的头到第一个 s 的尾巴成为 s0, 把第第一个 s 的尾巴到子串的尾巴成为 s1. 这样我们可以知道, 对于原始的 s 串, s = s0 +遍历长字符串, 获取以第一个字符串开头的长度小于长字符串长度一半的所有子串, 再判断长字符串能否用这些子串重复组合起来.可由子串 "abc" 重复四次构成。原创 2024-05-18 13:34:44 · 827 阅读 · 0 评论 -
代码随想录算法训练营第一天 | 704. 二分查找,27. 移除元素
二分法查找, 有序数组中删除置顶元素代码学习记录. 相对来说对个人更有意义. 日后回看自己写的糊涂杂乱误导思绪的文字, 定会幡然悔悟. 从此走上缜密的思维之路.原创 2024-05-08 22:55:49 · 474 阅读 · 0 评论 -
代码随想录算法训练营第八天| 344. 反转字符串、541. 反转字符串 II、替换字符串中的数字、55. 右旋字符串(第八期模拟笔试)
代码有逻辑问题, 编译器的报错提示把我带偏了. 对比了一下文章里的实现, 才发现哪里有问题. 还有是 Scanner.nextLine() 会导致输入的数字字符串中带有空格, 会解析异常. 还有就是, 代码模板里的逻辑不是很好用.今天看完解释之后发现, 自己第一反应的解法失去了题目本身的逻辑训练. 应该创建新的数组后, 将旧数组的内容复制到新数组中. 再进行算法的编写.遍历数组, 计算一下替换完数字后, 所需要的数组的大小. 创建一个新的数组, 把数据从旧的数组, 从上往下复制到新的数组中.原创 2024-05-18 01:31:05 · 860 阅读 · 0 评论 -
代码随想录算法训练营第十天| 232. 用栈实现队列、225. 用队列实现栈
算法大部分时间是一个想法没有想到, 或者思路找到入口了, 但是一些细节没有想明白, 实现起来就会异常的困难. 但是说实话, 普通资质的人, 面对海量的算法题的时候, 又如何可能完全想的明白呢. 自己的想法是, 对于简单和真正中等难度的题目, 一定要掌握到细节, 能说的清楚说的明白. 对于中等偏上的题目, 要能说的清楚原理. 而对于原理中比较隐藏的循环、迭代部分, 需要知道对应的存在, 然而想不明白的话可以暂时忽略. 等之后再遇到的时候, 也许会有豁然开朗的时刻.// 返回 False。原创 2024-05-19 10:51:55 · 663 阅读 · 1 评论 -
代码随想录算法训练营第七天| 454. 四数相加 II、383. 赎金信、15. 三数之和、18. 四数之和
给你四个整数数组nums1nums2nums3和nums4,数组长度都是n,请你计算有多少个元组2两个元组如下:1。原创 2024-05-15 02:52:56 · 961 阅读 · 0 评论 -
代码随想录算法训练营第四天 | 24. 两两交换链表中的节点、19. 删除链表的倒数第 N 个结点、面试题 02.07. 链表相交、142. 环形链表 II
因为一定是快指针追赶上慢指针, 因此快慢指针之间最大的距离就是快指针刚站到环的入口的下一节点, 而慢指针就踏入环的入口节点. 假设环一共有n个节点, 那快指针和慢指针之间, 就差了 n - 1 个节点. 当慢指针走了 n - 1 个节点的时候, 快指针就和他重叠了. 因此慢指针在一圈之内, 必定会被快指针赶上.很简单, 只要用双指针, 让快速指针向前移动 n 次, 造成一个有 n + 1 个元素的窗口, 然后同时移动快慢指针, 一直到快速指针到链表结尾.肯定不会, 直接看视频解答吧.原创 2024-05-11 23:39:46 · 624 阅读 · 2 评论 -
代码随想录算法训练营第三天 | 203. 移除链表元素 707. 设计链表 206. 反转链表
【代码】代码随想录算法训练营第三天 | 203. 移除链表元素 707. 设计链表 206. 反转链表。原创 2024-05-10 22:48:28 · 185 阅读 · 2 评论 -
代码随想录算法训练营第二天| 977. 有序数组的平方、209. 长度最小的子数组、59. 螺旋矩阵 II。
今天是比较沮丧的. 晚安.原创 2024-05-09 23:41:29 · 506 阅读 · 0 评论