- 博客(20)
- 收藏
- 关注
原创 力扣打卡每日一题————零钱兑换
定义dp[i]表示:凑成总金额i所需的最少硬币数量。问题的核心是动态规划的状态转移思想:将 “凑金额 i” 的大问题,拆解为 “凑金额 i-coin” 的小问题。
2025-12-13 11:44:03
287
原创 力扣打卡每日一题————最小覆盖子串
本文介绍了使用滑动窗口算法求解字符串最小覆盖子串问题。通过维护双指针动态调整窗口范围,利用哈希表统计字符需求,在O(n)时间复杂度内高效找到包含目标字符串所有字符的最短子串。关键步骤包括:初始化字符需求表、扩张右边界直至窗口有效、收缩左边界优化最小窗口、适时更新结果。算法通过避免冗余计算,显著提升了效率,适用于处理字符串匹配类问题。需要注意边界条件处理、哈希表计数逻辑及窗口收缩时机等细节。
2025-12-11 23:52:30
851
原创 力扣打卡每日一题————除自身外所有元素的乘积
给定一个整数数组nums,返回一个数组answer,其中answer[i]等于nums中除nums[i]之外所有元素的乘积。不能使用除法,且时间复杂度为 O (n)、空间复杂度为 O (1)(返回数组不计入额外空间)。示例:输入[1,2,3,4]→ 输出核心思想:将 “除自身外乘积” 拆分为左乘积 × 右乘积,分两次遍历分别计算,避免重复运算。关键细节:初始化全 1 数组、控制遍历边界、复用结果数组存储中间值,最大化节省空间。
2025-12-10 13:10:21
985
原创 力扣打卡每日一题——缺失的第一个正数
本文介绍了一种在未排序整数数组中寻找缺失最小正整数的算法。关键思路是利用数组索引实现原地哈希,将1~n的正整数归位到对应位置(数字k放在索引k-1处)。算法分两步:首先通过交换将有效数字归位,然后遍历查找第一个不满足nums[i]=i+1的位置。时间复杂度O(n),空间复杂度O(1)。示例展示了[3,4,-1,1]的处理过程,最终返回2。需要注意处理重复数和边界情况,避免死循环。该算法高效地利用了数组自身结构,无需额外空间。
2025-12-10 11:57:28
1156
原创 leetcode面试题--二叉搜索树的验证
判断一颗树是否是二叉排序树,不仅需要其每一个节点的左右子树都满足由于节点的左子树只包含 小于 当前节点的数,节点的右子树只包含 大于 当前节点的数,所有左子树和右子树自身必须也是二叉排序树,还需要保证每个节点的val值与其祖先节点的也要满足val值条件。
2024-10-23 17:30:53
833
原创 C++数据结构-链表
这是最简单的链表形式,每个节点包含两个部分:一部分存储数据元素,另一部分存储指向列表中下一个节点的指针(next)。链表的最后一个节点指向null(或称为None、nil),以此表示链表结束。链表是一种常见的数据结构,它由一系列的节点组成,每个节点包含数据部分和指向列表中下一个节点的next指针。:双向链表中的每个节点除了包含数据部分和指向下一个节点的指针外,还包含一个指向前一个节点的指针(pre)。:无论是单向循环链表还是双向循环链表,其特点都是链表的最后一个节点指向链表的第一个节点,形成一个环。
2024-08-19 00:50:09
302
1
原创 Linux笔记
内联函数,也叫编译时期展开函数, 指的是建议编译器将内联函数体插入并取代每一处调用函数的地方,从而节省函数调用带来的成本,使用方式类似于宏,但是与宏不同的是内联函数拥有参数类型的校验,以及调试信息,而宏只是文本替换而已。make的执行规则是,只生成所有目标对象中的第一个,当然make会根据语法规则,递归生成第一个目标对象的所有依赖对象后再回头生成第一个目标对象,生成后退出。死代码删除是编译最优化技术,指的是移除根本执行不到的代码,或者对程序运行结果没有影响的代码,而并不是删除被注释的代码。
2024-04-12 21:56:45
439
原创 C++_内联函数知识点
6,内联函数比起宏函数具有很显著的优点——内联函数在编译时是直接被嵌入到调用处代码中,而宏函数只是一个暴力的文本替换,内联函数可以进行类型安全检查、语句是否正确,而宏函数则不能。所以如果声明与定义分离的话,内联函数在声明的地方已经展开了,这会导致在调用的时候没办法进行展开,进而导致程序崩溃。我们一般的函数在调用时会跳转直对应的函数的地址,而内联函数则已经在调用的地方展开了,不需要去产生跳转这么个地址。3,但内联函数不一定好,虽然提高了效率,但也会付出代价,例如会占用大量内存,使代码体变得笨重。
2024-03-16 10:18:51
503
1
原创 C语言--部分排序算法
进行循环,在_left不大于_right的基础上,_right寻找小于key位置对应数据的下标,_left则寻找大于它的,然后在_left与_right未相遇的基础上,将它们对应的数据调换。希尔排序有预排序的功能,我们知道直接插入排序,排序越接近有序的数据效率越高,希尔排序不同于直接插入排序的一点就是会将数据预排序,使得数据接近有序,最后进行直接插入排序。最后将key与_left或_right的数据调换,此时_left与_right的数据必定小于key,因为是_right先走的,_right寻找小数据。
2024-03-03 10:15:37
464
原创 C语言——数据结构——二叉树(前序建树,后续销毁,树中查找X)
通过二叉树后序遍历的方式进行销毁,不能用前或者中序,会导致无法销毁整个树。如果找到相关数据,则返回该节点地址,若无则返回NULL。通过二叉树前序遍历的方式,将数据组成树。其中Data为数据类型。
2024-03-01 18:54:04
465
原创 C++入门之内联函数
在函数返回类型前使用inline关键字的函数称为“内联函数内联函数是一种用空间换时间的做法内联函数对编译器来说只是一种建议,不一定能被采纳。
2024-01-26 21:01:52
1041
1
原创 缺省函数和函数重载介绍
缺省函数是指在调用函数时,若没有传所需传参数,则采用该函数默认的的缺省参数为参数进行使用,缺省参数是函数声明时指定的一个默认参数。特别需要:缺省函数C语言并不支持,可在C++中使用,代码参考如下:int main()return 0;上面是一段缺省函数例子代码,执行结果如下:从执行结果我们不难理解何谓缺省函数,同时需要注意给缺省函数传参时,只能顺序着传,不能说跳着传,如下:这样是不行的,语法错误。
2024-01-23 17:21:56
1012
1
原创 保姆级基于C语言实现单链表的增删查改(内附源码)
/菜单//选择--------------------------------------------方式////选择插入方式,头插还是尾插//选择删除方式,头插还是尾插还是任意删//API---------------------------------------------插口////插入新学生信息(头插)//插入新学生信息(尾插)//删除学生信息(头删)//删除学生信息(尾删)//任意插//插在想要插入的学生之前//任意删//删掉该学生信息//修改学生。
2023-11-23 20:01:02
203
原创 目前TIOBE网上,世界范围内不同种计算机语言的使用率排名前十
5. C#:C#是一种面向对象的编程语言,拥有丰富的库和工具生态系统,它结合了C和C++的特点,提供了更高级的抽象和功能,具有强大的类型安全性、可靠性和可扩展性,被广泛应用于Windows平台的开发。C语言具有简洁的语法、直接的硬件访问能力和高度的可移植性,被广泛应用于系统级开发、嵌入式系统、驱动程序开发和高性能应用程序等领域。1. Python:Python是一种高级、通用、解释型的编程语言,具有丰富的标准库和第三方库,适用于各种领域的应用,包括科学计算、Web开发、数据分析、人工智能等。
2023-10-04 22:41:37
878
1
原创 使用VS编译器可能会遇到的一些常见问题
有些朋友可能觉得那就加个_s就行了,为什么要这么麻烦,但这是不太好的,因为scanf_s并不是标准的c语言用的函数,是VS编译器提供的,在别的编译器没有兼容性。假如你现在要把你的代码从VS编译器移植到别的编译器,你会发现在别的编译器根本运行不了,要一个个改很麻烦,所以最好不要习惯性使用scanf_s。1,使用scanf时报错,提示此函数不安全,而将scanf改为scanf_s就可以了。这种情况其实算是VS编译器的“特性”我们只需要在函数头上面加上下面这段(记得放在第一行)这段就可以了运行了。
2023-07-23 10:57:12
184
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅