自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(192)
  • 资源 (1)
  • 收藏
  • 关注

原创 在C语言能否把程序本身打印出来(Quine )?

在C语言能否把程序本身打印出来(Quine )?Quine是指的一种计算机程序,不通过任何形式的输入,将自己的源代码输出的一种程序,常见于自我复制程序,概念出于Computability Theory

2021-02-14 09:26:11 464 1

原创 TCP中的三次握手和四次挥手

TCP中的三次握手和四次挥手TCP是可信赖链接,所以三次握手的目的是确保链接到服务器指定端口,并且成功建立TCP连接。客户端首先会先发起第一次握手,客户端发送一个含有SYN的包裹(分组package),并且在包裹内含有尝试链接的服务器端口 第二次握手发生在服务器收到了客户端发来的第一次握手,服务器会返回一个含有ACK的包裹,代表已经成功收到你的请求,可以开始链接,并把链接需要的信息发送给客户端。 第三次握手发生在客户端收到了服务器的确认信息,并且发送一个含有ACK的包裹,代表我也成功收到你的信

2021-02-14 01:53:10 115

原创 C语言数据类型谜题总结

目录C语言数据类型谜题总结如果int x<0为真,那么(x*2)<0是否一定正确?unsigned int ux一定大于等于0么?如果(x&7)==7,那么(x<<30)<0一定正确么?C语言数据类型谜题总结前提:int x, y;unsigned ux = x;unsigned uy = y;如果int x<0为真,那么(x*2)<0是否一定正确?错误:溢出,严格上是下溢(underflow)#incl

2021-02-06 05:50:35 907

原创 证明贪心算法的正确性(详细总结)

目录证明贪心算法的正确性证明贪心算法的结构第一步:符合贪心选择的特性(Greedy Choice Property)第二步:符合归纳法结构(Inductive Structure)第三步:最优子结构(Optimal Substructure)例子:部分背包问题定义我们的算法:证明符合贪心选择的特性:证明符合归纳法结构(Inductive Structure)证明最优子结构(Optimal Substructure)证明贪心算法的正确性证明贪心算法的结构第一

2021-01-30 06:57:16 12853 10

原创 Linux基础知识总结(命令行)

目录Linux基础知识总结(命令行)man(手册工具)uname(查看系统相关信息)选项pwd(查看当前路径)cd(改变当前所在位置)Linux基础知识总结(命令行)man(手册工具)man uname(查看系统相关信息)选项xx@xx:~$ uname -r4.4.0-142-genericpwd(查看当前路径)cd(改变当前所在位置)cd可以改变当前用户所在的路径位置。

2021-01-27 09:14:27 4454 11

原创 【算法题】118. 杨辉三角

输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。输入: numRows = 5。输入: numRows = 1。

2024-02-26 02:25:42 474 1

原创 【算法题】117. 填充每个节点的下一个右侧节点指针 II

解释:给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。序列化输出按层序遍历顺序(由 next 指针连接),'#' 表示每层的末尾。填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。使用递归解题也符合要求,本题中递归程序的隐式栈空间不计入额外空间复杂度。输入:root = [1,2,3,4,5,null,7]输出:[1,#,2,3,#,4,5,7,#]

2024-02-26 02:24:54 256

原创 【算法题】116. 填充每个节点的下一个右侧节点指针

解释:给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。序列化的输出按层序遍历排列,同一层节点由 next 指针连接,'#' 标志着每一层的结束。填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。输入:root = [1,2,3,4,5,6,7]输出:[1,#,2,3,#,4,5,6,7,#]

2024-02-23 00:27:05 202

原创 【算法题】115. 不同的子序列

给你两个字符串 s 和 t ,统计并返回在 s 的 子序列 中 t 出现的个数,结果需要对 10^9 + 7 取模。如下所示, 有 3 种可以从 s 中得到 "rabbit" 的方案。如下所示, 有 5 种可以从 s 中得到 "bag" 的方案。输入:s = "rabbbit", t = "rabbit"输入:s = "babgbag", t = "bag"s 和 t 由英文字母组成。

2024-02-23 00:26:08 212

原创 【算法题】114. 二叉树展开为链表

展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null。输出:[1,null,2,null,3,null,4,null,5,null,6]进阶:你可以使用原地算法(O(1) 额外空间)展开这棵树吗?输入:root = [1,2,5,3,4,null,6]展开后的单链表应该与二叉树 先序遍历 顺序相同。树中结点数在范围 [0, 2000] 内。输入:root = [0]输入:root = []

2024-02-21 01:49:25 325 1

原创 【算法题】113. 路径总和 II

给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22。输入:root = [1,2,3], targetSum = 5。输入:root = [1,2], targetSum = 0。输出:[[5,4,11,2],[5,8,4,5]]树中节点总数在范围 [0, 5000] 内。

2024-02-21 01:48:24 463

原创 【算法题】112. 路径总和

判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum。输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22。输入:root = [1,2,3], targetSum = 5。解释:由于树是空的,所以不存在根节点到叶子节点的路径。不存在 sum = 5 的根节点到叶子节点的路径。解释:等于目标和的根节点到叶节点路径如上图所示。叶子节点 是指没有子节点的节点。

2024-02-20 22:26:51 156

原创 【算法题】111. 二叉树的最小深度

输入:root = [2,null,3,null,4,null,5,null,6]输入:root = [3,9,20,null,null,15,7]最小深度是从根节点到最近叶子节点的最短路径上的节点数量。树中节点数的范围在 [0, 10^5] 内。说明:叶子节点是指没有子节点的节点。给定一个二叉树,找出其最小深度。

2024-02-20 22:25:36 541

原创 如何做系统稳定性?

监控和日志:建立完善的监控体系,实时监控系统的运行状态和性能指标,及时发现异常并进行处理。定期维护和更新:定期对系统进行维护和更新,包括清理过期数据、更新软件版本、检查硬件状态等,确保系统始终运行在最佳状态。团队协作和沟通:建立高效的团队协作和沟通机制,确保团队成员能够及时了解系统状态和问题,并快速响应和处理。培训和知识分享:定期组织培训和知识分享活动,提高团队成员的技术水平和应对能力,增强团队的稳定性和凝聚力。持续优化:定期评估系统的稳定性和性能,根据评估结果进行优化和改进,持续提高系统的稳定性。

2024-02-19 23:52:43 692 2

原创 如何接口调优?

需要注意的是,接口调优是一个持续的过程,需要根据实际情况不断调整和优化。同时,还需要综合考虑业务需求、技术实现和性能要求等多个方面,以达到最佳的调优效果。接口调优是一个涉及多个方面的过程,旨在提高接口的性能、稳定性和可伸缩性。调整服务器和数据库的配置参数,如连接数、缓存大小等,以适应高并发场景。定期回顾接口性能数据,分析潜在的性能瓶颈,持续进行调优。建立完善的监控体系,实时监控接口的性能指标和异常情况。检查数据库查询语句的效率,优化数据库索引和查询逻辑。分析接口请求和响应的数据量,减少不必要的数据传输。

2024-02-19 23:51:43 314

原创 【算法题】110. 平衡二叉树

输入:root = [1,2,2,3,3,null,null,4,4]输入:root = [3,9,20,null,null,15,7]一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。给定一个二叉树,判断它是否是高度平衡的二叉树。树中的节点数在范围 [0, 5000] 内。输入:root = []

2024-02-18 22:50:00 240 1

原创 【算法题】109. 有序链表转换二叉搜索树

解释: 一个可能的答案是[0,-3,9,-10,null,5],它表示所示的高度平衡的二叉搜索树。给定一个单链表的头节点 head ,其中的元素 按升序排序 ,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差不超过 1。head 中的节点数在[0, 2 * 10^4] 范围内。输入: head = [-10,-3,0,5,9]输出: [0,-3,9,-10,null,5]输入: head = []

2024-02-18 22:48:47 157

原创 【算法题】108. 将有序数组转换为二叉搜索树

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。解释:[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。输入:nums = [-10,-3,0,5,9]输出:[0,-3,9,-10,null,5]nums 按 严格递增 顺序排列。输入:nums = [1,3]

2024-02-17 20:14:33 226

原创 【算法题】107. 二叉树的层序遍历 II

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

2024-02-17 20:13:12 177

原创 【算法题】106. 从中序与后序遍历序列构造二叉树

给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树。输入:inorder = [9,3,15,20,7], postorder = [9,15,7,20,3]输入:inorder = [-1], postorder = [-1]inorder 和 postorder 都由 不同 的值组成。输出:[3,9,20,null,null,15,7]postorder 保证是树的后序遍历。

2024-02-15 10:23:15 203

原创 【算法题】105. 从前序与中序遍历序列构造二叉树

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

2024-02-15 10:21:57 238

原创 【算法题】104. 二叉树的最大深度

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

2024-02-14 16:59:42 438

原创 【算法题】103. 二叉树的锯齿形层序遍历

给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。输入:root = [3,9,20,null,null,15,7]输出:[[3],[20,9],[15,7]]树中节点数目在范围 [0, 2000] 内。输入:root = [1]输入:root = []

2024-02-14 16:58:48 358

原创 【算法题】102. 二叉树的层序遍历

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

2024-02-13 21:52:29 1148

原创 【算法题】101. 对称二叉树

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

2024-02-13 21:51:12 500

原创 【Java】内置锁是什么?

内置锁(也称为监视器锁或互斥锁)是Java语言提供的一种基本的线程同步机制。在Java中,每个对象都自动持有一个内置的锁,这个锁也被称为对象的监视器锁(monitor lock)。当你使用关键字来同步一个代码块或方法时,你就是在使用这个内置锁。

2024-02-12 17:23:21 646

原创 【Java】可重入锁和重入锁的区别和使用场景

在Java中,可重入锁(ReentrantLock)和重入锁(Reentrant)是同一个概念,它们描述的是同一种锁的特性。因此,从定义上来说,可重入锁和重入锁没有区别。可重入锁(ReentrantLock)是Java中的一个类,属于java.util.concurrent.locks包,而重入锁(Reentrant)则是java.util.concurrent包中ReentrantLock类的一个特性。

2024-02-12 17:20:14 470

原创 【Java】乐观锁、悲观锁、可重入锁、不可重入锁、公平锁、非公平锁、互斥锁、共享锁的关系是什么?

这些术语并不完全独立,它们可以组合或交叉使用。例如,一个锁可以是可重入的、公平的、互斥的,或者同时满足其他多个特性。这些术语主要与多线程编程中的并发控制相关。下面我将逐一解释这些锁的概念,并解释它们之间的关系。

2024-02-11 17:28:25 353

原创 【Java】乐观锁、悲观锁、可重入锁、不可重入锁的关系是什么?

悲观锁则正好相反,它认为在处理过程中,一定会出现冲突,所以锁定操作过程中所涉及的数据,避免其他用户进行操作。总的来说,乐观锁和悲观锁是从加锁策略角度分类的,而可重入锁和不可重入锁是从锁的实现方式角度分类的。:这两种锁是具体的锁实现方式,与乐观锁和悲观锁并不直接对应。可重入锁(又称为递归锁)是指同一个线程在外层方法获取锁之后,再进入该线程的内层方法会自动获取锁,不会因为之前已经获取过还没释放而阻塞。而不可重入锁则正好相反,如果同一个线程在没有释放锁的情况下再次尝试获取锁,会发生死锁。

2024-02-11 17:26:37 178

原创 【Java】悲观锁和乐观锁有什么区别?

总的来说,悲观锁和乐观锁的选择需要根据具体的业务需求和性能要求来决定。在写操作较多或数据冲突较频繁的场景下,悲观锁可能更适合;而在读操作较多或数据冲突较少的场景下,乐观锁可能更合适。

2024-02-11 17:24:31 378

原创 【Java】乐观锁有哪些常见实现方式?

这两种方式都是在数据被修改前进行检查,如果数据没有被其他线程修改过,则进行修改操作,否则采取回滚或重试的策略,从而避免了数据冲突。乐观锁通常适用于读多写少的场景,因为只有在写操作时才会进行冲突检查,而读操作则不会加锁,因此可以提高并发性能。

2024-02-11 17:23:48 405

原创 【算法题】100. 相同的树

给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。输入:p = [1,2], q = [1,null,2]输入:p = [1,2,3], q = [1,2,3]输入:p = [1,2,1], q = [1,1,2]两棵树上的节点数目都在范围 [0, 100] 内。

2024-02-10 22:35:52 200 1

原创 【算法题】99. 恢复二叉搜索树

给你二叉搜索树的根节点 root ,该树中的 恰好 两个节点的值被错误地交换。解释:2 不能在 3 的右子树中,因为 2 < 3。交换 2 和 3 使二叉搜索树有效。解释:3 不能是 1 的左孩子,因为 3 > 1。交换 1 和 3 使二叉搜索树有效。输入:root = [3,1,4,null,null,2]输入:root = [1,3,null,null,2]输出:[2,1,4,null,null,3]树上节点的数目在范围 [2, 1000] 内。输出:[3,1,null,null,2]

2024-02-10 22:34:46 322

原创 【算法题】98. 验证二叉搜索树

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

2024-02-08 22:59:02 214 1

原创 【算法题】97. 交错字符串

交错 是 s1 + t1 + s2 + t2 + s3 + t3 + ... 或者 t1 + s1 + t2 + s2 + t3 + s3 + ...输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。输入:s1 = "", s2 = "", s3 = ""

2024-02-08 22:57:50 188

原创 【算法题】96. 不同的二叉搜索树

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。

2024-02-07 22:40:09 233 1

原创 【算法题】95. 不同的二叉搜索树 II

输出:[[1,null,2,null,3],[1,null,3,2],[2,1,3],[3,1,null,null,2],[3,2,null,1]]给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树。可以按 任意顺序 返回答案。

2024-02-07 22:39:02 118

原创 【算法题】94. 二叉树的中序遍历

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

2024-02-06 09:47:23 322

原创 【算法题】93. 复原 IP 地址

例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址,但是 "0.011.255.245"、"192.168.1.312" 和 "192.168@1.1" 是 无效 IP 地址。输出:["1.0.10.23","1.0.102.3","10.1.0.23","10.10.2.3","101.0.2.3"]输出:["255.255.11.135","255.255.111.35"]输入:s = "25525511135"输入:s = "101023"输入:s = "0000"

2024-02-06 09:42:53 1103

原创 【算法题】92. 反转链表 II

给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表。输入:head = [1,2,3,4,5], left = 2, right = 4。输入:head = [5], left = 1, right = 1。进阶: 你可以使用一趟扫描完成反转吗?输出:[1,4,3,2,5]链表中节点数目为 n。

2024-02-05 01:30:43 1366 1

WUSTL CSE课程总结.pdf

WUSTL学CS的小伙伴可以下载,文档正在持续更新中

2021-02-22

空空如也

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

TA关注的人

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