- 博客(20)
- 收藏
- 关注
原创 代码随想录算法训练营Day23 | 回溯算法 39.组和总和 40.组合总和 131.分割回文串(较难)
回溯算法 39.组和总和 40.组合总和 131.分割回文串(较难) 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。
2024-08-07 14:49:58 310
原创 代码随想录算法训练营Day22 | 回溯算法理论基础 77. 组合 216.组合总和III 17.电话号码的字母组合
有递归就有回溯,回溯包含在递归函数下。回溯的效率并不高,回溯的本质就是穷举所有可能,选出想要的答案。这些问题都可以抽象为树形结构。因为回溯法解决的都是在集合中递归查找子集,。
2024-07-31 18:30:00 451
原创 代码随想录算法训练营Day21 | 二叉树 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树
给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L)。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。
2024-07-31 10:00:00 408
原创 代码随想录算法训练营Day20 | 二叉树 235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点
二叉树 235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点
2024-07-30 19:00:00 861
原创 代码随想录算法训练营Day19 | 二叉树 530.二叉搜索树的最小绝对差 501.二叉搜索树种的众数 236.二叉树的最近公共祖先
最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。tips:树中至少有2个节点。二叉搜索树是有序的。236. 二叉树的最近公共祖先。
2024-07-30 14:30:18 432
原创 代码随想录算法训练营Day18 | 二叉树 654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索
二叉树 654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 给定一个不含重复元素的整数数组。通过给定的数组构建最大二叉树,并且输出这个树的根节点。
2024-07-22 20:23:27 361
原创 代码随想录算法训练营Day16 | 二叉树 513.找树左下角的值 112.路径总和 106.从中序与后续遍历序列构造二叉树
二叉树。513.找树左下角的值 112.路径总和 106.从中序与后续遍历序列构造二叉树给定一个二叉树,在树的最后一行找到最左边的值。在树的最后一行找到最左边的值。
2024-07-21 19:16:33 508
原创 代码随想录算法训练营Day15 | 二叉树 110.平衡二叉树 257.二叉树的所有路径 404.左叶子之和 222.完全二叉树的节点个数
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。# 什么是高度?什么是深度?返回 True返回 False。
2024-07-21 00:19:38 658
原创 代码随想录算法训练营Day14 | 二叉树 226.翻转二叉树 101.对称二叉树 二叉树的最大深度 二叉树的最小深度
如果node左子树不为空,则将左子树根节点压入栈中。如果node右子树不为空,则将右子树根节点压入栈中。递归调用 invertTree 方法,反转当前节点的左子树。递归调用 invertTree 方法,反转当前节点的右子树。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。定义一个栈,将根节点root作为初始元素压入栈中。给定一个二叉树,检查它是否是镜像对称的。说明: 叶子节点是指没有子节点的节点。返回反转后的二叉树的根节点。
2024-07-19 16:20:59 524
原创 代码随想录算法训练营Day13 | 二叉树理论基础 二叉树的递归遍历 前序、中序、后序遍历 102.二叉树的层序遍历
① 满二叉树:顾名思义就是结点都满的二叉树。定义:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。 深度为k,结点数为2^k-1的二叉树② 完全二叉树:最后一层可以不满,但最后一层从左到右结点连续。 定义:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层(h从1开始),则该层包含 1~ 2^(h-1) 个节点。 ③ 二叉搜索树:有数值的有序树
2024-07-18 17:14:50 879
原创 代码随想录算法训练营Day12 | 栈与队列 150. 逆波兰表达式求值 239. 滑动窗口最大值 347.前 K 个高频元素
根据 逆波兰表示法,求表达式的值。逆波兰表达式:是一种,所谓后缀就是指运算符写在后面。平常使用的算式则是一种中缀表达式,如 ( 1 + 2 ) * ( 3 + 4 )。该算式的逆波兰表达式写法为 ( ( 1 2 + ) ( 3 4 + ) * )。方法:使用栈。
2024-07-11 21:38:35 480
原创 代码随想录算法训练营Day11 | 栈与队列基础 232.用栈实现队列 225. 用队列实现栈 20. 有效的括号
栈与队列基础 栈:先进后出 empty - push - push - pop 队列:先进先出 栈和队列是(C++标准库)里面的两个数据结构。STL最旁边的三个版本:HP STL、P.J.Plauger STL、SGI STL。 232.用栈实现队列 225. 用队列实现栈 20. 有效的括号
2024-07-11 14:53:30 405
原创 代码随想录算法训练营Day9 | 字符串 151.翻转字符串单词 28.实现strStr() KMP算法介绍
字符串 LeetCode151.翻转字符串单词 ① 解题思路:先删除多余空白; 反转整个字符串;将每个单词反转②双指针法 28.实现strStr()①前缀表法 ②暴力法 KMP算法介绍,字符串总结
2024-07-01 19:57:32 429
原创 代码随想录算法训练营Day8 | 字符串 344.反转字符串 541. 反转字符串II
反转字符串。编写一个函数,将输入的字符串反转过来。这里,在python中,可以直接调用。
2024-06-29 10:00:00 404
原创 代码随想录算法训练营Day7 | 哈希表 LeetCode454.四数相加II 383. 赎金信 15. 三数之和
(四个整数数组中,各取一个字符,四个字符相加和为0,输出这样的组合有几个。给定四个包含整数的数组列表 A , B , C , D ,计算有元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。
2024-06-28 19:18:41 423
原创 代码随想录算法训练营Day6 | 哈希表理论基础 LeetCode 242. 有效的字母异位词 349.两个数组的交集 202. 快乐数 1.两数之和
哈希表,Hash table,也称散列表,是根据关键码的值而直接访问的数据结构。如,数组即为一张哈希表。哈希表,常用于:快速判断一个元素是否出现在集合里。,即将不同数据格式转化为不同数值,映射为哈希表上的索引数字。当存入内容数量大于哈希表大小时,若发生不同内容映射于哈希表同一索引下标的位置,即发生。和拉链法,将发生冲突的元素存储在同一索引的链表中;线性探测法,需要哈希表大小存入内容数量,发生冲突时,寻找哈希表中下一个空位来进行存放。:数组,set(集合),map(映射)
2024-06-27 20:17:03 943
原创 代码随想录算法训练营Day5 | LeetCode 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 02.07. 链表相交 142.环形链表II
题目:LeetCode24 两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 head = [1,2,3,4] Output = [2,1,4,3] 方法:① 迭代法 ② 递归法 迭代法在 leetCode 运行会超时。 题目:LeetCode19 删除链表倒数第N个节点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 head = [1,2,3,4,5] , n=2 Output = [1,2,3,5]
2024-06-26 14:58:52 422
原创 代码随想录算法训练营Day4 | 链表理论基础 LeetCode203.移除链表元素 707.设计链表 206.反转链表
链表基础知识:类型、操作、性能分析;移除链表元素,设置虚拟头节点;设计链表,包括六类常见的链表操作;反转链表,方法①双指针法cur,pre,temp,②递归法。
2024-06-24 20:51:22 518
原创 代码随想录算法训练营Day2 | LeetCode977.有序数组的平方 209.长度最小的子数组 59.螺旋矩阵II
给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。使用双指针,res指针需要从最大值往前平移一位。输出: [ [ 1, 2, 3 ],方法:①暴力求解 ②双指针法。方法:①暴力 ②滑动窗口。
2024-06-23 21:34:09 408
原创 代码随想录算法训练营Day1 | LeetCode704. 二分查找 LeetCode27. 移除元素
使用二分查找的前提:① 数组有序排序(升序或降序) ② 无重复元素方法:①左闭右闭② 左闭右开。
2024-06-21 14:27:42 295
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人