- 博客(27)
- 收藏
- 关注
原创 LeetCode 无重复字符的最长子串
摘要 题目要求找出字符串中不含重复字符的最长子串长度。采用滑动窗口方法优化暴力解法,时间复杂度从O(n²)降为O(n)。维护左右指针left和right构成的窗口,使用哈希表记录字符出现次数。当发现重复字符时,移动left指针直到消除重复。每次移动right指针时更新最大长度len。该方法确保指针单向移动,高效解决问题。
2025-08-15 10:32:29
270
原创 LeetCode三数之和 四数之和
本文介绍了LeetCode上三数之和和四数之和问题的解法。对于三数之和,采用排序后固定一个数,利用双指针寻找另外两个数的策略,并注意去重处理。四数之和则是在三数之和基础上增加一层循环,先固定一个数转化为三数之和问题。两题都需处理大数溢出问题,四数之和中使用了long long类型。关键点在于排序预处理、双指针技巧和去重操作,时间复杂度均为O(n²)和O(n³)。
2025-08-12 10:35:41
820
原创 LeetCode快乐数问题
本文介绍了判断快乐数的两种解法。快乐数定义为:对一个正整数不断求各位数字平方和,最终结果为1则为快乐数,否则会进入无限循环。第一种解法采用快慢指针法,通过检测循环中是否出现1来判断;第二种解法结合鸽巢原理,限定最大计算次数为810次(因为数值范围有限),若超过仍未得到1则判定不是快乐数。两种方法都通过辅助函数计算数字各位平方和,第二种方法通过限制迭代次数进一步优化了性能。
2025-08-08 12:42:54
279
原创 LeetCode盛最多水的容器
本文介绍了解决"盛最多水的容器"问题的双指针算法。题目要求在给定高度数组中找到两条垂线,使其与x轴构成的容器能容纳最多水。暴力解法时间复杂度为O(n^2)可能超时。双指针解法初始化左右指针分别指向数组两端,通过比较左右指针的高度,每次移动较小高度的指针来寻找可能更大的面积,同时记录过程中的最大面积值。该算法时间复杂度优化为O(n),空间复杂度为O(1),是一种高效解决方案。
2025-08-08 12:17:37
252
原创 LeetCode有效三角形的个数
文章摘要: 题目要求统计数组中能构成三角形的三元组个数。解题关键在于排序后利用双指针技巧:固定最长边nums[third],用双指针first和second在左侧寻找满足nums[first]+nums[second]>nums[third]的组合。当条件满足时,first到second之间的所有数对都有效,可直接累加结果。时间复杂度因排序和双指针优化降至O(n^2)。代码实现先排序数组,外层循环固定third,内层用双指针搜索有效组合,通过移动指针动态统计满足条件的数对数量。
2025-08-08 11:49:43
411
原创 自定义实现日志类
实现一个格式为日志内容的日志类最终目的就是将该日志打印在屏幕上或者文件中,在代码中添加日志功能可以帮助跟踪程序执行过程、调试问题以及记录关键操作。
2025-04-19 19:39:57
946
原创 理解并运用Linux线程
线程在多任务处理中扮演着核心角色,它通过轻量级的资源占用和高效的上下文切换,显著提升了系统的并发性能。本文将介绍Linux中线程如何实现,线程的作用,以及如何使用POSIX线程完成任务。
2025-04-01 21:43:50
1130
原创 Linux实现线程池
线程池是一种并发编程模式,它维护一组预先创建的线程,用于执行多个任务,避免了每次有新任务就去创建线程和销毁线程的开销。线程池就是负责任务与线程的匹配,线程池的核心思路是通过预先创建并管理一组线程,以高效执行大量短期任务,避免频繁创建和销毁线程的开销,提前创建固定数量的线程并保持活跃,任务到来时直接分配,当你有新的任务产生,并需要线程执行的时候,线程池将负责自动将传入的任务与线程进行匹配。同时线程池将任务提交与任务执行分离,提交者只需关注任务内容,线程池负责调度和执行,实现解耦。
2025-04-01 21:43:20
436
原创 Linux信号:进程间通信的神秘使者
信号(Signal) 是一种进程间通信(IPC)机制,用于通知进程发生了某种事件。信号是异步的,意味着它可以在任何时候发送给进程,而进程不需要主动等待信号的到来
2025-02-28 18:16:48
771
原创 动态内存函数易错例题详解
首先本文中所讲述的例题皆来自于《高质量 C++/C 编程指南》这本书中。这本书中包含了很多C/C++中的陷阱和编程规则,读完这本书之后,相信你会对C/C++有了一个新的认识。
2022-10-04 20:59:40
147
原创 不同数据类型在32位64位系统中存储
由于本人经常弄混指针变量和其他数据类型在32位和64位中存储的区别,所以写一篇博客方便以后弄清楚。地址(即指针变量):8byte(与32位不同)long: 8byte(与32位不同)
2022-09-27 18:12:26
371
原创 自定义类型之结构体详解
首先c语言中内置类型很多包括int,float,char,double,short等等,但是实际生活中有很多对象是无法用一种内置类型来描述的,比如描述中学生,一个学生首先是姓名,接着有班级,专业和学号,这里我们就需要从四个方面去描述,所以我们需要创建一个自定义类型来包含用于描述的四个变量。本文讲解的是自定义类型之一,结构体。
2022-09-20 17:13:00
786
原创 内存函数memcpy,memmove详解
内存函数的作用是什么,为什么我们需要内存函数首先大家都知道字符串操作函数例如:strstr,strlen,strcpy,字符串操作函数包含在头文件string.h中,而内存函数也包含在头文件string.h中,那为什么我们有了strncpy还需要memcpy呢,内存函数是以字节为单位改变内存里存储的值,直接访问地址,不会要求参数数据类型,比strncpy范围更广。
2022-09-15 12:07:48
882
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1