自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(127)
  • 问答 (1)
  • 收藏
  • 关注

原创 【JS红宝书学习笔记】第4章 变量、作用域和内存

ECMAScript 变量可以包含两种不同类型的数据:原始值和引用值。原始值(primitive value)就是最简单的数据(Undefined、Null、Boolean、Number、String 和 Symbol,其中之一),引用值(reference value)则是由多个值构成的对象。引用值是保存在内存中的。与其他语言不同,JavaScript 不允许直接访问内存位置,因此也就不能直接操作对象所在的内存空间。在操作对象时,实际上操作的是对该对象的引用(reference)而非实际的对象本身。

2024-05-23 11:17:44 310

原创 【JS红宝书学习笔记】第3章 语言基础

语句以分号结尾。省略分号意味着由解析器确定语句在哪里结尾。

2024-05-12 16:27:03 759

原创 【JS红宝书学习笔记】第1、2章 初识JS

JavaScript 是一门用来与网页交互的脚本语言,包含以下三个组成部分。

2024-05-11 11:42:04 919

原创 【LeetCode刷题记录】130. 被围绕的区域

给你一个 m x n 的矩阵 board ,由若干字符 ‘X’ 和 ‘O’ ,找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。输入:board = [[“X”,“X”,“X”,“X”],[“X”,“O”,“O”,“X”],[“X”,“X”,“O”,“X”],[“X”,“O”,“X”,“X”]]输出:[[“X”,“X”,“X”,“X”],[“X”,“X”,“X”,“X”],[“X”,“X”,“X”,“X”],[“X”,“O”,“X”,“X”]]

2024-05-10 16:37:53 415

原创 【LeetCode刷题记录】994. 腐烂的橘子

在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。返回 直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。输入:grid = [[2,1,1],[1,1,0],[0,1,1]]输出:4输入:grid = [[2,1,1],[0,1,1],[1,0,1]]输出:-1。

2024-05-10 10:06:01 471

原创 【LeetCode刷题记录】200. 岛屿数量

给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。输入:grid = [输出:1输入:grid = [输出:3grid[i][j] 的值为 ‘0’ 或 ‘1’

2024-05-09 15:48:29 618

原创 【LeetCode刷题记录】124. 二叉树中的最大路径和

二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和。输入:root = [1,2,3]输出:6解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6输入:root = [-10,9,20,null,null,15,7]输出:42。

2024-05-08 17:44:36 799

原创 【LeetCode刷题记录】236. 二叉树的最近公共祖先

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出:3解释:节点 5 和节点 1 的最近公共祖先是节点 3。

2024-05-07 16:40:35 496

原创 【LeetCode刷题记录】437. 路径总和 III

给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。输入:root = [10,5,-3,3,2,null,11,3,-2,null,1], targetSum = 8输出:3解释:和等于 8 的路径有 3 条,如图所示。

2024-05-06 20:01:39 919 1

原创 【LeetCode刷题记录】105. 从前序与中序遍历序列构造二叉树 & 106. 从中序与后序遍历序列构造二叉树

给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]输出: [3,9,20,null,null,15,7]输入: preorder = [-1], inorder = [-1]输出: [-1]preorder 和 inorder 均 无重复 元素。

2024-05-06 15:45:26 497

原创 【LeetCode刷题记录】114. 二叉树展开为链表

给你二叉树的根结点 root ,请你将它展开为一个单链表:展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null。展开后的单链表应该与二叉树 先序遍历 顺序相同。输入:root = [1,2,5,3,4,null,6]输出:[1,null,2,null,3,null,4,null,5,null,6]输入:root = []输出:[]输入:root = [0]输出:[0]树中结点数在范围 [0, 2000] 内。

2024-05-05 21:25:59 238

原创 【LeetCode刷题记录】230. 二叉搜索树中第K小的元素

给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。输入:root = [3,1,4,null,2], k = 1输出:1输入:root = [5,3,6,2,4,null,null,1], k = 3输出:3树中的节点数为 n。1<=k<=n<=1040<=Nodeval<=104进阶:如果二叉搜索树经常被修改(插入/删除操作)并且你需要频繁地查找第 k 小的值,你将如何优化算法?

2024-05-05 00:33:38 852

原创 【LeetCode刷题记录】98. 验证二叉搜索树

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。输入:root = [2,1,3]输出:true输入:root = [5,1,4,null,null,3,6]输出:false解释:根节点的值是 5 ,但是右子节点的值是 4。树中节点数目范围在1104内−231<=Nodeval。

2024-05-05 00:15:07 1260

原创 【LeetCode刷题记录】108. 将有序数组转换为二叉搜索树

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵平衡二叉搜索树。输入:nums = [-10,-3,0,5,9]输出:[0,-3,9,-10,null,5]输入:nums = [1,3]输出:[3,1]解释:[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。1

2024-05-04 21:03:47 859

原创 【LeetCode刷题记录】199. 二叉树的右视图

给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。输入: [1,2,3,null,5,null,4]输出: [1,3,4]输入: [1,null,3]输出: [1,3]输入: []输出: []二叉树的节点个数的范围是 [0,100]

2024-05-02 11:30:00 285

原创 【LeetCode刷题记录】110. 平衡二叉树

给定一个二叉树,判断它是否是平衡二叉树输入:root = [3,9,20,null,null,15,7]输出:true输入:root = [1,2,2,3,3,null,null,4,4]输出:false输入:root = []输出:true树中的节点数在范围 [0, 5000] 内−104<=Nodeval<=104。

2024-05-02 11:00:00 356

原创 【LeetCode刷题记录】543. 二叉树的直径

给你一棵二叉树的根节点,返回该树的 直径。二叉树的 直径 是指树中任意两个节点之间最长路径的 长度。这条路径可能经过也可能不经过根节点 root。两节点之间路径的 长度 由它们之间边数表示。输入:root = [1,2,3,4,5]输出:3解释:3 ,取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。输入:root = [1,2]输出:1树中节点数目在范围1104内−100<=Nodeval<=100。

2024-05-01 11:30:00 958

原创 【LeetCode刷题记录】101. 对称二叉树

给你一个二叉树的根节点 root , 检查它是否轴对称。输入:root = [1,2,2,3,4,4,3]输出:true输入:root = [1,2,2,null,3,null,3]输出:false树中节点数目在范围 [1, 1000] 内进阶:你可以运用递归和迭代两种方法解决这个问题吗?

2024-05-01 11:00:00 279 1

原创 【LeetCode刷题记录】226. 翻转二叉树

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]输入:root = [2,1,3]输出:[2,3,1]输入:root = []输出:[]树中节点数目范围在 [0, 100] 内。

2024-04-30 20:53:34 324 1

原创 【LeetCode刷题记录】104. 二叉树的最大深度

给定一个二叉树 root ,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。输入:root = [3,9,20,null,null,15,7]输出:3输入:root = [1,null,2]输出:2树中节点的数量在0104区间内。

2024-04-30 20:33:10 1083 1

原创 【LeetCode刷题记录】102. 二叉树的层序遍历

给你二叉树的根节点 root ,返回其节点值的 层序遍历。(即逐层地,从左到右访问所有节点)。输入:root = [3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]输入:root = [1]输出:[[1]]输入:root = []输出:[]树中节点数目在范围 [0, 2000] 内。

2024-04-29 14:52:12 297

原创 【LeetCode刷题记录】23. 合并 K 个升序链表

给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:1->4->5,1->3->4,2->6将它们合并到一个有序链表中得到。输入:lists = []输出:[]输入:lists = [[]]输出:[]0<=k<=104−104<=listsij。

2024-04-29 11:00:18 415

原创 【LeetCode刷题记录】94. 二叉树的中序遍历

给定一个二叉树的根节点 root ,返回 它的 中序 遍历。输入:root = [1,null,2,3]输出:[1,3,2]输入:root = []输出:[]输入:root = [1]输出:[1]树中节点数目在范围 [0, 100] 内进阶: 递归算法很简单,你可以通过迭代算法完成吗?

2024-04-28 09:35:37 325

原创 【LeetCode刷题记录】148. 排序链表

给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表。输入:head = [4,2,1,3]输出:[1,2,3,4]输入:head = [-1,5,3,4,0]输出:[-1,0,3,4,5]输入:head = []输出:[]链表中节点的数目在范围05∗104内−105<=Nodeval<=105进阶:你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?

2024-04-26 11:00:00 832

原创 【LeetCode刷题记录】138. 随机链表的复制

给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点。例如,如果原链表中有 X 和 Y 两个节点,其中 X.random --> Y。

2024-04-25 14:52:01 1066

原创 【LeetCode刷题记录】92. 反转链表 II & 25. K 个一组翻转链表

两题都是反转链表,放在一起整理。图解来自B站视频讲解:[反转链表](强推!!!

2024-04-25 11:18:06 1066 1

原创 【LeetCode刷题记录】24. 两两交换链表中的节点

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。输入:head = [1,2,3,4]输出:[2,1,4,3]输入:head = []输出:[]输入:head = [1]输出:[1]链表中节点的数目在范围 [0, 100] 内。

2024-04-24 15:56:38 467

原创 【LeetCode刷题记录】19. 删除链表的倒数第 N 个结点

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]输入:head = [1], n = 1输出:[]输入:head = [1,2], n = 1输出:[1]链表中结点的数目为 sz进阶:你能尝试使用一趟扫描实现吗?

2024-04-24 11:53:48 225

原创 【LeetCode刷题记录】2. 两数相加

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.输入:l1 = [0], l2 = [0]输出:[0]输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]

2024-04-23 11:25:29 512

原创 【LeetCode刷题记录】21. 合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]输入:l1 = [], l2 = []输出:[]输入:l1 = [], l2 = [0]输出:[0]两个链表的节点数目范围是 [0, 50]l1 和 l2 均按 非递减顺序 排列。

2024-04-23 11:00:00 219

原创 【LeetCode刷题记录】142. 环形链表 II

给定一个链表的头节点 head ,返回链表开始入环的第一个节点。如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改 链表。输入:head = [3,2,0,-4], pos = 1。

2024-04-22 11:25:07 1103

原创 【LeetCode刷题记录】141. 环形链表

给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回 true。否则,返回 false。输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。

2024-04-22 11:00:00 694

原创 【LeetCode刷题记录】234. 回文链表

给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true;否则,返回 false。输入:head = [1,2,2,1]输出:true输入:head = [1,2]输出:false链表中节点数目在范围[1, 105] 内进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?

2024-04-21 21:57:58 222

原创 【LeetCode刷题记录】206. 反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]输入:head = [1,2]输出:[2,1]输入:head = []输出:[]链表中节点的数目范围是 [0, 5000]进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?思路(1)迭代法:将每个节点的next指针指向改为前一个节点,第一个指针的next指向空节点,需要prev指针保存当前节点作为下一个指针的前节点。

2024-04-21 20:45:52 479

原创 【LeetCode刷题记录】160. 相交链表

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构 。自定义评测:评测系统 的输入如下(你设计的程序 不适用 此输入): - 相交的起始节点的值。如果不存在相交节点,这一值为 0 - 第一个链表 - 第二个链表 - 在 中(从头节点开始)跳到交叉节点的节点数 - 在 中(从头节

2024-04-18 11:30:00 1177

原创 【LeetCode刷题记录】240. 搜索二维矩阵 II

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5输出:true。

2024-04-18 11:00:00 841

原创 【LeetCode刷题记录】48. 旋转图像

输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]给定一个 n × n 的二维矩阵 matrix 表示一个图像。由于需要原地操作,可先进行转置(交换对角线元素),之后再将矩阵的每一行进行翻转即可。旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。如果不需要原地操作,只需要新建空矩阵,使新矩阵。

2024-04-17 11:30:00 321

原创 【LeetCode刷题记录】54. 螺旋矩阵

给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]

2024-04-17 11:00:00 408

原创 【LeetCode刷题记录】73. 矩阵置零

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0。请使用 原地 算法。输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]m==matrixlengthn==matrix0leng。

2024-04-16 11:30:00 610

原创 【LeetCode刷题记录】41.缺失的第一个正数

给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。输入:nums = [1,2,0]输出:3解释:范围 [1,2] 中的数字都在数组中。输入:nums = [3,4,-1,1]输出:2解释:1 在数组中,但 2 没有。输入:nums = [7,8,9,11,12]输出:1解释:最小的正数 1 没有出现。

2024-04-16 11:00:00 945

空空如也

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

TA关注的人

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