自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 112. 路径总和 - 力扣(LeetCode)

依旧外部变量记录sum,当等于targetSum并且是叶子节点是就设置答案,前序位置放进入节点时加入该节点值,后序位置放离开该节点时减去该节点值。这里使用深度优先遍历更简单一些,广度的话要同时多个枝条的总值,最后再检查一遍,太麻烦了。树的遍历有两种:1. 深度优先遍历 2. 广度优先遍历。深度呢,就是一条遍历完,去另外一条,适合这种有关单个枝条的题目。属于遍历一遍可以得到答案的题,树的遍历一般都是通过递归来实现。

2025-10-03 18:24:21 205

原创 110. 平衡二叉树 - 力扣(LeetCode)

【代码】110. 平衡二叉树 - 力扣(LeetCode)

2025-10-02 19:32:57 204

原创 108. 将有序数组转换为二叉搜索树 - 力扣(LeetCode)

注意三点:1. 索引传递依照左闭右开的原则 2. begin、mid、end设置好 3.base case。由于数组升序排序,选择数组中间的mid元素当根结点,然后左子树和右子树是同类型的子问题。这题可以分解问题得到答案。

2025-10-02 19:07:31 162

原创 104. 二叉树的最大深度 - 力扣(LeetCode)

解法二:分解问题,如果想知道根结点的最大深度,如果知道左子节点的最大深度和右子节点的最大深度,进行一个比较,就知道结果了。那么再把子节点的问题分解下去。解法1:遍历二叉树的所有节点,记录下深度的最大值(前序刚进入、后序要离开、中序刚遍历完左子树,所以在前序进入位置深度++,后序离开位置深度--)一个是分解问题得到答案,通过得到子问题答案到最终问题答案,需要返回值来解决。这就实现了一个,能得到最大深度的函数,坚信它,然后用就行了。一个是遍历一遍得到答案,依旧外部变量记录,不需要返回值。

2025-10-02 19:01:42 125

原创 101. 对称二叉树 - 力扣(LeetCode)

和100题一样的思想,只不过传入方式不同,同时传入的left和right总是轴对称的,和100题处于同一个位置一样。

2025-09-30 16:27:57 108

原创 100. 相同的树 - 力扣(LeetCode)

前序、中序、后序,三个位置的代码执行时机分别是,未遍历过该节点的子树、仅遍历过该节点的左子树、全遍历过该节点的左右子树。可以看出后序位置是最强大的,但这题用不到后序,前序即可解决问题,只需要看两个树的当前节点是否一致就可以了,用外部变量来记录。属于遍历一遍能得到答案的题,但用递归遍历,需要理解递归思想。

2025-09-30 16:17:32 147

原创 88. 合并两个有序数组 - 力扣(LeetCode)

用三个指针,两个倒序比对nums1和nums2的尾元素,大的放入nums1的真正尾端。一个用来倒序完善nums1的真尾。直到把nums2全部放入nums1为止。(这个方法有点钻空子了,题目要考察原地修改,但原地修改总是有些费脑子的,所以利用vector的重载赋值运算符,把新数组的元素赋给nums1)解法1:声明一个新数组,双指针轮流比较nums1和nums2的元素大小,小的放进去,随后一一放入,最后把新数组赋值给nums1。解法2:在灵茶山艾府的题解学到的。属于遍历一遍能得到答案的题。

2025-09-30 15:37:59 146

原创 70. 爬楼梯 - 力扣(LeetCode)

爬楼梯中,假如n == 30,那么最后一步要么是上一个台阶或者是上两个台阶,两种方法没有重叠,子问题就是 n == 29 和 n == 28,n == 30 的结果就是 (n== 29结果 + n == 28结果),子问题也去找子问题的答案。(动态规划时间复杂度一般很高,因为会有大量答案被重复计算,比如n == 29 后面的子问题,n == 28 也要再算一次,所以需要优化记录被算过的答案,这里用记忆化搜索,一个外部变量来记录,也有其他优化的方法)重点:分清子问题是什么,子问题之间是否独立。

2025-09-29 12:44:51 103

原创 69. x 的平方根 - 力扣(LeetCode)

根据题目要求,该数的平方根如果刚好是整数就返回,如果是小数,就舍弃,也就是返回大于平方数的前一个数。也属于遍历一遍就能得到答案的题。

2025-09-29 12:21:09 213

原创 67. 二进制求和 - 力扣(LeetCode)

题目给的二进制的字符串类型,字符串不能用于数值计算,利用底层存储的ASCII码值来转为数值,例如 '1' - '0' = 1,'1'就被转为数值1了。进位处理题目,处理好val和carry就没问题(倒序计算方便,后面翻转一下就行)

2025-09-29 12:10:18 182

原创 66. 加一 - 力扣(LeetCode)

常规的倒序处理数组元素加法。主要集中于加法的值和进位的问题。这题特殊一个点在于,第一位的加法如果还有进位,需要把进位头插。

2025-09-27 19:21:52 134

原创 二叉树的前序遍历和删除特定叶子结点逻辑

if(!if(!int main()return 0;

2025-09-24 17:53:59 199

原创 14. 最长公共前缀 - 力扣(LeetCode)

确定逻辑上遍历的方式。保证每个字符串的前缀字符相同,必须要一个个比对,固定第一个字符,遍历所有string,那么字符在外层,string在内层。如果有字符串和固定的第一个字符不匹配,记录false返回ans,否则记录true加入字符进ans。这里是一个vector<string>,那么结构就是vector数组里每个元素存的string。因为是所有字符串的前缀比对,应以最短的字符串为遍历次数,否则会越界。常规的二维不同类型元素判断。

2025-09-21 15:10:56 242

原创 13. 罗马数字转整数 - 力扣(LeetCode)

常规逻辑:先处理特殊情况,再处理一般情况。利用map键值映射特性,省去大量if。

2025-09-21 14:27:50 142

原创 9. 回文数 - 力扣(LeetCode)

【代码】9. 回文数 - 力扣(LeetCode)

2025-09-20 20:50:53 223

原创 数据结构与算法

不过据labuladong说,工程中几乎不会用到静态数组,一般是动态数组(不过是在静态数组的基础上增加了扩/缩容和增删查改的API而已)。不过但凡是数组,都是这同样的好处和坏处。总之,深刻理解了数组和链表两者的优缺点,以及它们的内存处理方式,也就几乎学会了整个数据结构的内容。随后,只需要掌握各个数据结构们的特性了,做到扬长避短。其他的数据结构,诸如队列、栈、树、图、堆,也只是它们二者之一的衍生品而已。后面的数据结构都是在数组和链表框架下的问题了,结构细分化而已,怎么都逃脱不开这两个老祖宗。

2025-09-01 20:57:39 137

原创 同步与异步

同步、异步都是一种编程概念,描述的是两个任务之间的关系。如果说在同一进程中,任务一和任务二是同步的关系,那么任务一和任务二是保持一个先后的顺序依次执行,任务二需要等待任务一从开始到结束后才可以开始执行,平常的代码顺序执行就是如此。执行任务一时,任务二并不会被任务一阻塞等待。假如任务一有个io请求,那么任务一需要等待数据到达缓冲区,才可以执行io操作,在这个等待数据的时间,可以继续执行任务二,等数据准备好后,再去根据事件循环调度完成任务一。1. 回调函数 (Callback)2. 事件驱动 (Event-dr

2024-11-30 20:58:55 290

原创 close与网络io

断开连接是网络io的最后一步。因为通常是客户端向服务器断开连接,会涉及到三次握手、四次挥手的概念。

2024-11-27 20:42:03 315

原创 recv、send与网络io

1.通过send函数将数据拷贝至套接字的发送缓冲区2.如果是TCP协议,数据会被拆分为TCP数据段并添加TCP报头3.如果是UDP协议,数据会被拆分为UDP数据报,并添加UDP报头4.进入网络层协议,加上ip报头5.进入链路层协议,加上链路层的帧头,MAC地址等6.数据被放入网卡驱动的队列中7.网卡通过DMA方式直接读取,并通过物理层(电缆、光纤、无线信道)发送出去。

2024-11-26 15:42:39 1015

原创 socket与网络io

在c库中,有socket和其配套函数可以实现服务端和客户端的TCP连接,进而实现数据交流。

2024-11-24 17:42:32 399

空空如也

空空如也

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

TA关注的人

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