自定义博客皮肤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)
  • 收藏
  • 关注

原创 Day20 | 二叉树 654. 最大二叉树 / 617. 合并二叉树 / 700. 二叉搜索树中的搜索 / 98. 验证二叉搜索树

构造二叉树类的题目,一般采用的是,先构造中间节点,然后递归构造左子树和右子树。这道题目其实和 “Leetcode 106.从中序与后序遍历序列构造二叉树” 是一个思路。注意类似用数组构造二叉树的题目,每次分隔尽量不要定义新的数组,而是通过下标索引直接在原数组上操作,这样可以节约时间和空间上的开销。解题:成功(弄懂 Leetcode 106,这道题就很简单了)

2024-01-02 21:57:04 381

原创 Day18 | 二叉树 513. 找树左下角的值 / 112. 路径总和 / 113. 路径总和 II / 106. 从中序与后序遍历序列构造二叉树 / 105. 从前序与中序遍历序列构造二叉树

一层一层切下去,每次后序数组最后一个元素就是节点元素。

2023-12-30 23:59:03 338 1

原创 Day17 | 二叉树 110. 平衡二叉树 / 257. 二叉树的所有路径 / 404. 左叶子之和

因为一开始想到了要求左右子树的高度,但是纠结的地方在于,如果此时不满足平衡二叉树,我要返回什么值给父节点。因为递归函数定义的返回值是 int,那就不可能返回 boolean 类型的值。看了题解,觉得有点绕,它是通过判断一个节点的左节点不为空,该节点的左节点的左节点为空,该节点的左节点的右节点为空,则证明找到了一个左叶子。平时我们解二叉树的题目时,已经习惯了通过节点的左右孩子判断本节点的属性,而本题我们要通过节点的父节点判断本节点的属性。回溯和递归是一一对应的,有一个递归,就要有一个回溯。

2023-12-29 10:26:13 368 1

原创 Day 16 | 二叉树 104. 二叉树的最大深度 / 559. N 叉树的最大深度 / 111. 二叉树的最小深度 / 222. 完全二叉树的节点个数

二叉树节点的:指从根节点到该节点的最长简单路径边的条数或者节点数(取决于深度从0开始还是从1开始)二叉树节点的:指从该节点到叶子节点的最长简单路径边的条数或者节点数(取决于高度从0开始还是从1开始)本题可以使用前序(中左右),也可以使用后序遍历(左右中),。根节点的高度就是二叉树的最大深度,所以本题中我们通过后序求的根节点高度来求的二叉树最大深度。

2023-12-28 22:59:17 386 1

原创 Day 15 | 二叉树的层序遍历 / 226. 翻转二叉树 / 101. 对称二叉树 / 100. 相同的树 / 572. 另一棵树的子树

二叉树的层序遍历,就是图论中的广度优先搜索在二叉树中的应用,需要借助来实现。

2023-12-26 22:37:16 353 1

原创 Day14 | 144. 二叉树的前序遍历 / 94. 二叉树的中序遍历 / 145. 二叉树的后序遍历

二叉树的种类(1)满二叉树(2)完全二叉树(3)二叉搜索树(4)平衡二叉搜索树(AVL树):它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。二叉树的存储方式(1)链式存储:指针(2)顺序存储:数组二叉树的遍历方式(1)深度优先遍历:前序遍历(递归法,迭代法)中序遍历(递归法,迭代法)后序遍历(递归法,迭代法)(2)广度优先遍历:层次遍历(迭代法)递归三要素(1)

2023-12-22 22:52:18 320

原创 Day12 | 239. 滑动窗口最大值 / 347. 前 K 个高频元素

栈的应用:括号匹配问题、字符串去重问题、逆波兰表达式问题等队列:单调队列和优先级队列。

2023-12-22 00:37:02 363

原创 Day11 | 栈与队列 20. 有效的括号 / 1047. 删除字符串中的所有相邻重复项 / 150. 逆波兰表达式求值

栈为什么适合做这种类似于爱消除的操作,因为栈帮助我们记录了遍历数组当前元素时候,前一个元素是什么。

2023-08-07 17:31:01 35 1

原创 Day10 | 栈与队列 232. 用栈实现队列 / 225. 用队列实现栈

时间复杂度:push 和 empty 为 O(1),pop 和 peek 为 O(n)用两个栈可以实现队列的基本操作。用一个队列就可以模拟栈。空间复杂度:O(n)

2023-08-07 01:38:14 38 1

原创 Day9 | 字符串 28. 找出字符串中第一个匹配项的下标 / 459. 重复的子字符串

双指针法双指针法在数组,链表和字符串中很常用。反转字符串反转字符串;反转字符串中的单词;左/右旋KMP使用KMP可以解决两类经典问题:(1)匹配问题;(2)重复子串问题。

2023-08-06 21:30:03 26 1

原创 Day8 | 字符串 344. 反转字符串 / 541. 反转字符串II / 剑指 Offer 05. 替换空格 / 151. 翻转字符串里的单词 / 剑指 Offer 58 - II. 左旋转字符串

在 151. 翻转字符串里的单词 (opens new window) 中,要对一句话里的单词顺序进行反转,先整体反转再局部反转是一个很妙的思路。剑指 Offer 58 - II. 左旋转字符串 则是先局部反转再整体反转,与 151. 翻转字符串里的单词 (opens new window) 类似,但是也是一种新的思路。

2023-07-29 02:30:00 31

原创 Day7 | 哈希表 454.四数相加II / 383. 赎金信 / 15. 三数之和 / 18. 四数之和

这道题目和 Leetcode 242.有效的字母异位词 很像。看了题解,这道题其实就是两数相加的拓展。

2023-07-24 03:14:44 24

原创 Day6 | 哈希表 242.有效的字母异位词 / 349. 两个数组的交集 / 202. 快乐数 / 1. 两数之和

本题还可以使用数组来作为哈希表,因为数值规定都在0~1000之间,这样效率可能更高一些,毕竟set需要先计算 hash 值再存储。一开始想用map,后面想了下,用数组更简单。因为只有小写英文字母,数组长度固定。map的那些常用函数名有点忘了。题很简单,但是对于set的常用函数不够熟悉。例如add,contains,循环遍历等。,这相当于判断一个元素是否出现在集合里,此时就要考虑哈希法了。关键在于理解为什么会想到用哈希法,为什么用map结构。关键在于要理解为什么会想到用哈希法。这道题目,可以感受到。

2023-07-22 06:21:02 60

原创 Day4 | 链表基础 24. 两两交换链表中的节点 / 19. 删除链表的倒数第N个节点 / 面试题 02.07. 链表相交 / 142. 环形链表 II

虚拟头结点双指针 / 快慢指针环形链表考察链表的操作其实就是考察指针的操作。

2023-07-19 20:28:30 34

原创 Day3 | 链表基础 203.移除链表元素 / 707.设计链表 / 206.反转链表

链表题目写while循环条件的时候,可以直接代入特殊案例去判断这样写是否会有空指针异常等错误出现。还可以根据最终 cur 指针应该停在什么位置,来编写循环条件,比如要在链表尾部添加元素,那么很容易想到循环条件应该是cur.next!= null,因为只有 cur 指针指向链表最后一个元素,才可以操作该元素的指针,使其指向新元素。

2023-07-17 06:36:16 19

原创 Day2 | 数组基础 977. 有序数组的平方 / 209.长度最小的子数组 / 59. 螺旋矩阵 II

二分法(循环不变量原则,严格遵守区间定义)双指针法滑动窗口。

2023-07-14 10:11:11 25

原创 Day1 | 数组基础 704. 二分查找、27. 移除元素

​。

2023-07-13 05:05:29 242

空空如也

空空如也

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

TA关注的人

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