- 博客(20)
- 收藏
- 关注
原创 代码随想录算法训练营第二十三天| lc 39. 组合总和 |lc 40. 组合总和 II | lc 131. 分割回文串
题目给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。
2025-01-31 17:08:13
364
原创 代码随想录算法训练营第二十二天| 回溯算法 | lc 77. 组合 | lc 216. 组合总和 III | lc 17. 电话号码的字母组合
熟记递归的本质是暴力搜索,回溯伴随着递归,本质上是一棵递归树(做题是可以模拟递归树),树的宽度就是for循环遍历元素集合的大小,树的深度就是递归函数的调用次数。先使用map存储电话号码和字母的对应关系,遍历长度就是index到digits的长度,递归深度是满足digits的长度。回溯伴随着递归,本质上是一棵递归树,树的宽度就是for循环遍历元素集合的大小,树的深度就是递归函数的调用次数。用回溯的思想来做,求组合问题,遍历长度为index到n,递归长度为list中存够k个数即可。注意 1 不对应任何字母。
2025-01-30 14:49:37
358
原创 代码随想录算法训练营第二十一天| lc 669. 修剪二叉搜索树 |lc 108. 将有序数组转换为二叉搜索树 | lc 538. 把二叉搜索树转换为累加树
题目给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。可以证明,存在 唯一的答案。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。
2025-01-14 16:34:31
447
原创 代码随想录算法训练营第二十天| lc 235. 二叉搜索树的最近公共祖先 | lc 701. 二叉搜索树中的插入操作| lc 450. 删除二叉搜索树中的节点
题目给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]
2025-01-13 14:38:15
374
原创 代码随想录算法训练营第十八天| lc 530. 二叉搜索树的最小绝对差 |lc 501. 二叉搜索树中的众数 |lc 236. 二叉树的最近公共祖先
题目给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值。差值是一个正数,其数值等于两值之差的绝对值。
2025-01-10 15:20:56
315
原创 代码随想录算法训练营第十七天| lc 654. 最大二叉树 | lc 617. 合并二叉树 | lc700. 二叉搜索树中的搜索 | lc 98. 验证二叉搜索树
题目给定一个不重复的整数数组 nums。最大二叉树 可以用下面的算法从 nums 递归地构建:创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后缀上 构建右子树。返回 nums 构建的 最大二叉树。
2025-01-10 11:17:24
431
原创 代码随想录算法训练营第十六天| lc 513. 找树左下角的值 |lc 112. 路径总和 | lc 113. 路径总和 II | lc 105. 从前序与中序遍历序列构造二叉树
题目给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。假设二叉树中至少有一个节点。
2025-01-04 15:27:47
621
原创 代码随想录算法训练营第十五天| lc.110. 平衡二叉树 | lc. 257. 二叉树的所有路径 | lc. 104.二叉树的最大深度|lc 404.左叶子之和|lc 222. 完全二叉树的节点个数
题目给定一个二叉树,判断它是否是平衡二叉树平衡二叉树 是指该树所有节点的左右子树的高度相差不超过 1。
2024-12-31 12:21:14
1796
原创 代码随想录算法训练营第十四天 | lc.226. 翻转二叉树 | lc.101. 对称二叉树 | lc. 104.二叉树的最大深度
题目给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。
2024-12-24 15:52:35
343
原创 代码随想录算法训练营第十三天 | 二叉树的基本操作 | lc 102. 二叉树的层序遍历 | lc 107.二叉树的层次遍历 II | lc 199. 二叉树的右视图 | lc 637.二叉树的层平均
二叉树的种类二叉树的存储方式二叉树的遍历方式二叉树的代码定义。
2024-12-23 17:49:00
1595
原创 代码随想录算法训练营第十一天 | lc 150. 逆波兰表达式求值 | lc 239. 滑动窗口最大值| lc 347.前 K 个高频元素
给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。请你计算该表达式。返回一个表示表达式值的整数。注意:· 有效的算符为 ‘+’、‘-’、‘*’ 和 ‘/’。· 每个操作数(运算对象)都可以是一个整数或者另一个表达式。· 两个整数之间的除法总是 向零截断。· 表达式中不含除零运算。· 输入是一个根据逆波兰表示法表示的算术表达式。· 答案及所有中间计算结果可以用 32 位 整数表示。
2024-12-18 18:21:35
340
原创 代码随想录算法训练营第十天 | lc 232.用栈实现队列 | lc 225. 用队列实现栈| lc 20. 有效的括号|lc 1047. 删除字符串中的所有相邻重复项
请你仅使用两个栈实现先入先出队列。
2024-12-17 17:04:54
896
原创 代码随想录算法训练营第九天 | lc 151.翻转字符串里的单词 | lc 28. 找出字符串中第一个匹配项的下标| lc 459. 重复的子字符串
给你一个字符串 s ,请你反转字符串中 单词 的顺序。单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。
2024-12-09 20:38:45
444
原创 代码随想录算法训练营第八天 | lc 344. 反转字符串 | lc 541. 反转字符串 II | 替换数字
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
2024-12-05 23:08:37
444
原创 代码随想录算法训练营第七天 | lc 454. 四数相加 II | lc 383. 赎金信 | lc 15. 三数之和 |lc 18. 四数之和
题目:454. 四数相加 II文档链接:代码随想录视频链接:学透哈希表,map使用有技巧!示例 1:示例 2:思路代码看完代码随想录之后的想法&今日收获题目 两个数组的交集题目 383. 赎金信文档链接:代码随想录示例1:示例2:思路代码看完代码随想录之后的想法&今日收获题目 三数之和题目 15. 三数之和文档链接:代码随想录视频链接:梦破碎的地方!| LeetCode:15.三数之和注意:答案中不可以包含重复的三元组。示例 1:思路代码
2024-12-05 16:42:31
842
原创 代码随想录算法训练营第六天 | lc 242.有效的字母异位词 | lc 349. 两个数组的交集 | lc 202. 快乐数 |1. 两数之和
首先什么是哈希表,哈希表(英文名字为Hash table,国内也有一些算法书籍翻译为散列表,大家看到这两个名称知道都是指hash table就可以了)哈希表是根据关键码的值而直接进行访问的数据结构。这么官方的解释可能有点懵,其实直白来讲其实数组就是一张哈希表。如图所示:那么哈希表能解决什么问题呢,一般哈希表都是用来快速判断一个元素是否出现集合里是O(1)的时间复杂度解决hash碰撞的几种方法。
2024-12-04 00:37:38
2132
原创 代码随想录算法训练营第四天 | lc 24.两两交换链表中的节点 | lc 19. 删除链表的倒数第 N 个结点 | lc. 面试题 02.07. 链表相交 |142. 环形链表 II
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
2024-12-02 18:40:53
816
原创 代码随想录算法训练营第三天 | lc.203 移除链表元素 | lc.707. 设计链表 | lc. 206.反转链表
什么是链表,链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。链表的入口节点称为链表的头结点也就是head。如图所示:数组在内存中是物理形式的连续分配,而链表是逻辑上的连续链表的定义链表的操作主要涉及增、删、改,关键就是调整next指针指向的ListNode。
2024-12-01 17:48:50
524
原创 代码随想录算法训练营第二天 | lc.209. 长度最小的子数组 | lc.59. 螺旋矩阵 II
给定一个含有 n 个正整数的数组和一个正整数 target找出该数组中满足其总和大于等于 target 的长度最小的子数组[numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0。
2024-11-28 23:19:20
430
原创 代码随想录算法训练营第一天 | lc.704 二分查找 | lc.27 移除元素 | lc.744 有序数组的平方
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
2024-11-27 14:49:46
793
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅