自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一篇文章搞懂进程、线程和协程

进程、线程和协程作为操作系统的重要概念,对我们了解和学习操作系统有很大的帮助,本文就简单的介绍这三者之间的关系。进程:操作系统资源分配的基本单位,拥有独立的内存空间、文件描述符等系统资源,属于操作系统内核级。进程内的执行单元,共享进程的资源(内存、文件等),是 CPU 调度的基本单位,是进程内的 “轻量级执行流”,属于操作系统内核级。用户态的轻量级执行单元,运行在线程内,由程序自身控制调度,不依赖内核,是线程内的 “微执行流”,属于用户态。包含关系:一个进程可以包含多个线程,一个线程可以包含多个协程。

2025-11-10 15:37:46 665

原创 力扣hot100-最大子数组和

本文介绍了力扣hot100中53.最大子数组和问题的动态规划解法。通过定义curmax和finmax两个变量,分别表示以当前元素结尾的最大子数组和和全局最大值。核心思路是遍历数组,对每个元素判断是加入前一个子数组还是重新开始,并更新全局最大值。该方法时间复杂度O(n),空间复杂度O(1)。文章提供了完整代码示例,帮助理解这种高效的动态规划解法。

2025-10-26 20:19:47 269

原创 C++拷贝构造

本文介绍了C++中拷贝构造函数的概念、常见问题及实现方法。拷贝构造函数通过已有对象初始化新对象,参数必须为const引用以避免无限递归。调用场景包括对象初始化、函数值传递和返回。重点区分浅拷贝(仅复制值)和深拷贝(重新申请内存):当类包含指针成员时必须实现深拷贝,否则会导致重复释放内存的程序崩溃。文章通过代码示例展示了如何正确实现深拷贝构造函数,并分析了常见问题的解决方案。理解这些概念对掌握C++对象生命周期和内存管理至关重要。

2025-10-26 19:16:55 753

原创 力扣hot100-三数之和

本文介绍了解决力扣三数之和问题的排序+双指针策略。首先对数组排序以便去重和双指针遍历,然后固定一个数,用双指针在剩余数组中寻找和为固定数相反值的两个数。通过跳过重复元素避免重复解,时间复杂度由排序主导。代码示例展示了具体实现逻辑,包括排序、双指针遍历和去重处理。该解法有效利用了排序预处理和双指针技术,是处理此类求和问题的典型方法。

2025-10-26 18:15:55 367

原创 力扣hot100-合并区间

本文介绍了力扣hot100第56题合并区间;的解题思路。核心解法遵循排序→遍历→合并三步法:首先按区间左端点排序使重叠区间相邻;然后遍历时维护当前合并区间的左右端点,通过比较判断是否扩展右边界;最后将合并结果存入答案。该方案自然处理了空输入、单个区间等边界情况,时间复杂度主要由排序决定。文章通过代码示例展示了具体实现,强调这种排序预处理思路对解决类似问题的通用性。

2025-10-26 17:21:13 1105

原创 力扣hot100-矩阵置零

本文介绍了使用标记法解决力扣73题"矩阵置零"问题。核心思路是先标记后置零:首先遍历矩阵,用两个数组记录需要置零的行和列;然后再次遍历矩阵,根据标记数组将对应行列置零。该方法时间复杂度为O(m×n),空间复杂度为O(m+n),实现了原地操作。文章提供了完整的C++代码示例,并强调数组作为数据容器的特性,建议在解决数组问题时多考虑标记法等思路。

2025-10-25 16:22:18 264

原创 力扣hot100-找到字符串中所有字母异位词

本文介绍了如何利用滑动窗口和哈希表解决字符串中查找字母异位词的问题。字母异位词是指通过重新排列字母形成的新词,其长度与原词相同。解题思路是维护一个与目标字符串p等长的滑动窗口,通过哈希表统计窗口内字符频率并与p的字符频率进行对比,若一致则记录起始索引。该方法时间复杂度为O(slen+plen),空间复杂度取决于字符集大小。文章提供了完整的C++代码实现,通过双指针协同工作高效解决问题,适用于连续子序列等类似场景。

2025-10-24 17:33:35 1205

原创 力扣hot100-无重复字符的最大子串

本文介绍了滑动窗口算法在解决"无重复字符的最长子串"问题中的应用。通过维护一个[left,right)窗口,确保窗口内字符不重复,并动态调整左边界。初始解法使用双重循环,时间复杂度较高;优化版本采用哈希表记录字符位置,将时间复杂度降至O(n)。两种方法都通过比较窗口长度与maxlength来获取最终结果,其中哈希表优化显著提升了算法效率。

2025-10-24 16:03:14 353

原创 智能指针循环引用问题

本文探讨了C++11中shared_ptr智能指针的循环引用问题及其解决方案。当两个或多个shared_ptr互相持有对方引用时,会导致引用计数无法归零,造成内存泄漏。通过将其中一个shared_ptr替换为weak_ptr(不增加引用计数),可以打破循环引用闭环。文章通过代码示例和图例详细演示了问题产生的原因和weak_ptr的解决方案,最终实现资源的正常释放。使用智能指针时应避免循环引用,合理运用weak_ptr可有效解决这一常见问题。

2025-10-23 12:34:29 1245

原创 力扣hot100--接雨水

这篇文章介绍了一种解决LeetCode 42题"接雨水"问题的双指针方法。作者从行的角度进行分析,通过维护左右指针计算每个高度层的储水量。算法步骤包括:跳过无效边界、计算当前高度下的总面积和柱子面积、累加储水量,并移动较矮的指针寻找新边界。文章通过具体示例演示了计算过程,解释了为何要保留较高的边界指针,以确保不漏算雨水。该方法利用"短板效应"逐层计算储水量,最终汇总得到总接水量。

2025-10-17 18:29:47 442

原创 const_cast运算符

本文介绍了C++中const_cast强制类型转换运算符的作用和注意事项。const_cast主要用于去除指针或引用的const属性,是唯一能直接操作const的运算符。通过代码示例演示了使用const_cast尝试修改常量时可能出现的"常量折叠"现象:虽然能通过指针修改内存值,但由于编译器优化,原常量值保持不变。作者强调这种修改常量的行为属于未定义行为,不建议在实际开发中使用。文章总结了const_cast的基本用途和使用限制,为初学者提供了实用参考。

2025-10-15 18:05:52 306

空空如也

空空如也

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

TA关注的人

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