自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 代码随想录算法训练营第二十一天|530.二叉树的最小绝对差,501.二叉搜索树中的众数,236.二叉树的最近公共祖先

中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。进阶:你可以不使用额外的空间吗?(假设由递归产生的隐式调用栈的开销不被计算在内)给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。差值是一个正数,其数值等于两值之差的绝对值。给定 BST [1,null,2,2],给你一个二叉搜索树的根节点。的最近公共祖先是节点。

2023-08-15 22:39:25 53

原创 代码随想录算法训练营第二十天|654.最大二叉树,617.合并二叉树,700.二叉搜索树中的搜索,98.验证二叉搜索树

合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;- [3,2,1,6,0,5] 中的最大值是 6 ,左边部分是 [3,2,1] ,右边部分是 [0,5]。- [3,2,1] 中的最大值是 3 ,左边部分是 [] ,右边部分是 [2,1]。- [2,1] 中的最大值是 2 ,左边部分是 [] ,右边部分是 [1]。- [0,5] 中的最大值是 5 ,左边部分是 [0] ,右边部分是 []。- 只有一个元素,所以子节点是一个值为 1 的节点。- 空数组,无子节点。

2023-08-14 22:43:59 45

原创 代码随想录算法训练营第十八天|513.找树左下角的值,112.路径总和,113.路径总和Ⅱ,106.从中序与后序遍历序列构造二叉树,105.从前序与中序遍历序列构造二叉树

的路径,这条路径上所有节点值相加等于目标和。是同一棵树的后序遍历,请你构造并返回这颗。等于目标和的根节点到叶节点路径如上图所示。路径总和等于给定目标和的路径。假设二叉树中至少有一个节点。和一个表示目标和的整数。是指没有子节点的节点。是指没有子节点的节点。是二叉树的中序遍历,

2023-08-12 21:31:51 54 1

原创 代码随想录算法训练营第十七天|110.平衡二叉树,257.二叉树的所有路径,404.左叶子之和

在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24。给定一个二叉树,判断它是否是高度平衡的二叉树。的左右两个子树的高度差的绝对值不超过 1。,返回所有从根节点到叶子节点的路径。给你一个二叉树的根节点。是指没有子节点的节点。,返回所有左叶子之和。

2023-08-11 23:57:07 51 1

原创 代码随想录算法训练营第十六天|104.二叉树的最大深度,111.二叉树的最小深度,222.完全二叉树的节点个数

递归法万变不离其宗,要考虑好三点。1.参数和返回值。2.终止条件。3.递归逻辑。

2023-08-10 23:06:23 45 1

原创 代码随想录算法训练营第十五天|层序遍历,226。翻转二叉树,101.对称二叉树

层序遍历的类似题很多,leedcode上的,102,107,199,647,429,515,116,117,104,111。这次我们拿102,515,111当作例子来写。这两种的思路都是不一样的。递归主要思考的是递归是从最底下开始往上计算,而迭代则是从上到下,从左到右的思路。给你一个二叉树,请你返回其按 层序遍历 得到的节点值。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。,请找出该二叉树中每一层的最大值。,翻转这棵二叉树,并返回其根节点。叶子节点是指没有子节点的节点。给你一个二叉树的根节点。

2023-08-09 22:32:42 36

原创 代码随想录算法训练营第十四天|二叉树:理论基础,递归遍历,迭代遍历,统一迭代

在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。广度优先遍历一般使用队列来实现,因为先进先出的结构特点,才能一层一层的来遍历。如果一棵二叉树只有度为0的节点和度为2的节点,并且度为0的节点在同一层上,则这棵二叉树为满二叉树。数组存储二叉树遍历:如果父节点下标为i,那么它的左孩子就是i*2+1,右孩子为i*2+2。这棵二叉树为满二叉树,也可以说深度为k,有2^k-1个节点的二叉树。前序遍历,中序遍历,后序遍历。下面这二颗树都是搜索树。

2023-08-08 23:25:39 69

原创 代码随想录算法训练营第十三天|239.滑动窗口最大值,前K个高频元素,总结

计算机系统常遇到这样一类问题:前一个任务已经执行完成,需要在待执行任务中挑选一个新的执行。最简单的方法是按照队列先入先出FIFO来进行。但是会导致紧急度高的任务在队列中等待时间过长。为了解决这个问题,有了这个策略:优先级队列。优先级队列出队顺序总是按照元素自身的优先级。c#中使用void Enqueue(TElement element, TPriority priority) 基于优先级添加元素。在栈与队列中,有两种特殊队列。1.单调队列。2.优先级队列。大顶堆与小顶堆的概念。

2023-08-07 22:29:15 45 1

原创 代码随想录算法训练营第十一天| 20.有效的括号,1047.删除字符串中的所有相邻重复项, 150.逆波兰表达式求值

例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。在完成所有重复项删除操作后返回最终的字符串。在 S 上反复执行重复项删除操作,直到无法继续删除。时间复杂度:O(n)空间复杂度:O(n)时间复杂度:O(n)空间复杂度:O(1)

2023-08-05 20:32:05 33 1

原创 代码随想录算法训练营第十天| 栈与队列的理论基础,232.用栈实现队列,225,用队列实现栈

请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push(x) -- 将一个元素放入队列的尾部。peek() -- 返回队列首部的元素。empty() -- 返回队列是否为空。pop() -- 从队列首部移除元素。

2023-08-04 17:20:00 41 1

原创 代码随想录算法训练营第八天| 344.反转字符串,541.反转字符串Ⅱ,剑指offer 05.替换空格,151.翻转字符串里的单词,剑指offer58-Ⅱ,左旋转字符串

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。输入:["H","a","n","n","a","h"]输出:["h","a","n","n","a","H"]输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]中的每个空格替换成"%20"。

2023-08-02 19:36:43 38 1

原创 代码随想录算法训练营第七天| 454.四数相加Ⅱ,383.赎金信,15.三数之和,18.四数之和,总结

一般来说,哈希表都是用来快速判断一个元素是否出现在集合里。当出现不重复,涉及到交集等问题时,考虑hashset。

2023-08-01 18:22:00 43 1

原创 代码随想录算法训练营第六天| 哈希表理论基础,242.有效的字母异位词,349.两个数组的交集,202.快乐数,1.两数之和

一般遇到不重复数组时,考虑使用HashSet。

2023-07-31 21:23:21 51 1

原创 代码随想录算法训练营第四天| 24. 两两交换链表中的节点,19.删除链表的倒数第N个节点 ,面试题 02.07. 链表相交,142.环形链表II,总结

满指针进入循环时,快指针已经走了一定长度。满指针走完一个循环,快指针必定走了2个循环。所以在到达慢指针的第一个循环的时候,快慢指针在某一时刻已经相遇。而且快指针的速度相对于慢指针为1,所以必定能遇到慢指针。指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。,请你找出并返回两个单链表相交的起始节点。,返回链表开始入环的第一个节点。,仅仅是为了标识链表的实际情况。时间复杂度:O(n);,则在该链表中没有环。空间复杂度:O(1)空间复杂度:O(1)空间复杂度:O(1)

2023-07-29 18:08:10 226

原创 代码随想录算法训练营第三天| 链表理论基础,203.移除链表元素,707.设计链表,206.反转链表

直接设置一个虚拟表头,然后在设置一个移动表头。当移动节点的下一个节点参数等于目标值时,移动节点的next为下下节点,否则移动移动节点到下一节点。当移动节点的next为空时,说明到了末尾,则跳出循环。添加节点:先将新节点的next指向下一个节点,再将目标节点的next指向新节点。删除节点:只需将想删除的节点的前一个结点的next指向想删除的下一个节点即可。出现的问题:记住要先判断头节点是否为空。时间复杂度:O(n)空间复杂度:O(1)

2023-07-28 18:06:25 346 1

原创 代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II ,总结

遇到这种输出有序数组的,十有八九是要排序,先考虑双指针等方法解题。遇到计算连续数组的题目,可以首先考虑尝试动态窗口的思路来解决问题。这两天来,在数组中常用到的思想解法:二分法,双指针法,滑动窗口法。二分法:中要注意的就是区间的定义。其衍生的解决问题有寻找左边界,寻找右边界。其核心思想就是压缩右边界或压缩左边界。双指针法:除了正常使用左右各设置外,还要考虑快慢指针来解决问题。滑动窗口:根据当前的子序列的大小和情况,不断调节子序列的起始位置。

2023-07-27 16:25:53 401 1

原创 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。

当遇到有序数组查询的问题时,就可以考虑使用二分法进行解决。二分法主要考察区间问题,这里使用左闭右闭区间,快速推到边界条件,从而解决问题。因为刷过一次,所以对基础题还是有思路并能写出解决方案。但是小问题出的太多了,导致耗费大量时间。就当锻炼了Debug能力了,但是下次引以为戒。对特效方法还是要多多回顾,加强记忆。

2023-07-26 16:36:56 602 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除