- 博客(21)
- 收藏
- 关注
原创 【C++】模板初阶
本文介绍了C++中模板的基本概念和使用方法。模板是实现泛型编程的重要工具,包括函数模板和类模板两种形式。函数模板通过参数化类型实现通用函数,支持隐式和显式实例化;类模板则用于创建通用类,必须显式实例化。模板将重复工作交由编译器处理,是C++泛型编程的核心机制。
2025-11-15 17:01:17
1226
24
原创 【LeetCode】将 x 减到 0 的最小操作数
本文探讨了如何找到将数组两端元素之和减到目标值x的最小操作数。通过逆向思维,将问题转化为在数组中间寻找最长子数组,使其和等于总和减x。利用滑动窗口算法高效解决该问题,时间复杂度为O(n)!
2025-11-14 12:40:01
1277
13
原创 【LeetCode】最大连续1的个数 III
摘要: 本文探讨了LeetCode题目1004(最大连续1的个数III)的解法。题目要求在二进制数组中翻转最多k个0后,找到连续1的最大长度。暴力解法通过两层循环枚举所有情况,但时间复杂度较高导致超时。优化解法采用滑动窗口技术,通过动态调整窗口左右边界,确保窗口内0的个数不超过k,从而高效计算最大连续1的长度。代码实现中,右指针遍历数组,左指针在0超标时移动收缩窗口,并实时更新最大长度。该方法显著提升了性能,适用于大规模数据。
2025-11-03 20:42:23
698
4
原创 【LeetCode】无重复字符的最长子串
这篇文章介绍了如何计算字符串中无重复字符的最长子串长度。主要思路是使用滑动窗口配合哈希表优化判断重复字符的过程:当右指针字符计数超过1时,左指针不断右移并减少对应字符计数,直到消除重复。通过比较当前窗口大小与记录最大值来更新结果。最终代码利用数组模拟哈希表快速判断重复,时间复杂度为O(n),比暴力解法更高效。
2025-10-29 12:39:47
984
3
原创 【C++】内存管理
摘要: 本文介绍了C/C++程序的内存管理机制,重点分析了内存区域的划分(栈、堆、数据段、代码段等)及其设计原因(管理效率、安全性、资源利用)。详细对比了C语言的动态内存管理函数(malloc/calloc/realloc/free)与C++的new/delete操作符,强调后者在操作自定义类型时会自动调用构造/析构函数的优势。通过代码示例演示了动态内存的申请、初始化及释放流程,并提醒注意内存泄漏风险。适用于理解底层内存管理机制的开发者阅读。(150字)
2025-10-28 19:46:51
1164
3
原创 【LeetCode】长度最小的子数组
本文介绍了LeetCode上第209题「长度最小的子数组」的两种解法。题目要求在正整数数组中找出和大于等于目标值target的最短连续子数组长度。第一种暴力解法通过双重循环枚举所有子数组,虽优化部分情况但仍会超时;第二种解法采用滑动窗口算法,通过维护动态窗口使时间复杂度降至O(n)。文章详细分析了滑动窗口的算法原理,并提供了C++代码实现,最终通过测试用例验证了其高效性。核心思路是利用双指针动态调整窗口范围,避免重复计算,从而优化性能。
2025-10-22 18:23:28
910
1
原创 【LeetCode】四数之和
摘要: 本文介绍了LeetCode四数之和问题的解法,要求在数组中找出不重复的四元组使其和等于目标值。算法基于排序和双指针技术,转化为三数之和问题的扩展。通过固定一个数后在其右区间进行三数之和搜索,使用set或手动去重处理重复解。代码实现中需注意整数溢出问题,建议使用long long类型存储中间计算结果。该方法时间复杂度为O(n³),适用于处理中等规模数据。
2025-10-15 20:48:25
762
1
原创 【LeetCode】三数之和
摘要 本文介绍了LeetCode题目"三数之和"的两种解法。第一种暴力枚举,时间复杂度O(n³),使用set容器去重但会超时。第二种解法采用排序+双指针优化,将时间复杂度降至O(n²),同时也讲了利用数组有序特性手动去重的方法:跳过重复元素和提前终止无效搜索。文章通过示例详细分析了去重逻辑和优化思路,最终提供了通过所有测试用例的高效解法。关键点在于排序预处理、双指针优化和去重操作的结合应用。
2025-10-12 15:27:36
1017
3
原创 【LeetCode】查找总价格为目标值的两个商品
本文介绍了在有序数组中查找两个商品价格之和等于目标值的算法。题目要求从升序排列的价格数组中找到两个数,使其和等于给定的目标值。暴力枚举法时间复杂度为O(n²),会超时。优化方案采用双指针算法,利用数组有序特性,通过调整左右指针逐步逼近目标值,时间复杂度降至O(n)。代码实现列举了两种写法,有时候需要注意处理未找到的情况以避免编译出错。
2025-10-08 20:08:29
593
原创 类和对象:实战练习【日期类的实现】
本文介绍了如何实现一个日期类,主要包括日期加减天数、日期比较等功能的运算符重载。通过将类声明与实现分离到不同文件(Date.h、Date.cpp、test.cpp),并使用命名空间进行封装。重点讲解了日期加减的核心逻辑:通过循环处理跨月/跨年的进位借位问题,并复用+=/-=运算符简化代码。文章还特别说明了前置/后置++/--操作符的重载区别,以及如何通过GetMonthDay()辅助函数处理不同月份的天数差异(包括闰年判断)。最终实现了一个功能完整的日期类,可作为C++面向对象编程的实战练习。
2025-10-08 11:13:05
1045
原创 【LeetCode】 有效三角形的个数
本文介绍了如何统计数组中能组成三角形的三元组个数。首先分析暴力解法时间复杂度为O(n^3)的不足,进而提出优化思路:先排序数组,利用三角形特性(升序数组中只需判断a+b > c)。最优解法采用双指针技术,固定最大数后,在剩余区间内统计满足条件的组合,时间复杂度降至O(n^2)。最终代码实现简洁高效,通过排序加双指针遍历即可解决问题。
2025-10-05 17:48:14
737
原创 【LeetCode】 盛最多水的容器
本文介绍了盛水容器问题的解法。题目要求在给定高度数组中找出两条线,使其与x轴构成的容器能容纳最多水。通过分析发现,暴力枚举法时间复杂度为O(n^2)会超时。优化解法采用双指针法,从数组两端开始,每次移动较短边的指针,保留可能更大的容积区域,直到两指针相遇,时间复杂度降为O(n)。文中给出了C++代码实现,通过双指针动态计算并更新最大容积值,最终得到最优解。
2025-10-02 14:58:36
635
原创 C++类和对象:收尾
本文总结了C++类和对象中的几个重要知识点:1)类型转换机制,包括内置类型到类类型的隐式转换及explicit关键字的使用;2)static成员的特性和用法,如静态成员变量初始化、静态成员函数访问限制等;3)友元机制,包括友元函数和友元类的定义及特性;4)内部类的概念及其与外部类的关系;5)匿名对象的语法和生命周期特性。这些知识点涉及C++面向对象编程中的高级特性,对理解类与对象的关系及使用方式具有重要意义。
2025-09-30 20:13:27
913
1
原创 【LeetCode】快乐数
快乐数判定算法:通过双指针巧解循环问题 摘要:本文介绍了判断快乐数的算法题解。快乐数定义为:对一个正整数不断进行各位数字平方和运算,最终结果为1则为快乐数。关键思路在于利用快慢指针检测循环:慢指针每次计算一次平方和,快指针计算两次,两者相遇时判断结果是否为1。文章给出了两种代码实现,并分析了优化思路,强调了算法学习中的坚持与成长。该解法巧妙利用了数学规律,避免了无限循环的问题。
2025-09-27 15:12:07
712
原创 C++ 类和对象:默认成员函数【取地址运算符重载】
本文介绍了C++中const成员函数和取地址运算符重载的相关知识。const成员函数通过在参数列表后加const修饰,限制函数内不能修改类的成员变量,其本质是修饰隐含的this指针为const类型。取地址运算符重载分为普通和const版本,通常由编译器自动生成,返回对象地址即可。这两种语法特性有助于增强代码的安全性和灵活性,是C++面向对象编程的重要补充。
2025-09-17 16:26:43
143
原创 C++类和对象:默认成员函数【拷贝构造、赋值运算符重载】
本文主要介绍了C++中两个重要的默认成员函数:拷贝构造函数和赋值运算符重载。文章还详细探讨了运算符重载的规则和特性,包括参数数量、成员函数实现、特殊运算符处理等。
2025-09-02 20:13:58
753
原创 C++入门小语法
C++这门语言最初是本贾尼祖师爷为了补足C语言的一些缺陷而在其基础上进行拓展的,故而C++兼容C语言的很多语法又根C语言有所不同,本文主要介绍的就是C++入门阶段一些区别于C语言而C++独有的小语法。C++发展历史C++的起源可以追溯到1979年,当时Bjarne Stroustrup(本贾尼·斯特劳斯特卢普,这个翻译的名字不同的地方可能有差异)在贝尔实验室从事计算机科学和软件工程的研究工作。面对项目中复杂的软件开发。
2025-05-09 21:54:00
1341
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅