- 博客(29)
- 收藏
- 关注
原创 【算法学习之路】12.DFS
!1.深度优先搜索,是一种用于遍历或搜索树或图的算法。所谓深度优先,就是说每次搜尝试向更深的节点走。2.在搜索算法中,该DFS常常指利用递归函数方便的实现暴力枚举的算法,与图论中的DFS算法有一定相似之处,但不完全相同。通常是构造一棵搜索树(或是说状态树)来搜索。
2025-03-19 22:43:47
531
原创 【算法学习之路】10.二叉树
!二叉树的题目大多基于递归f(root){//对以root为根的二叉树做一些操作或判断//递归体if(root??){注意:可能为空树。
2025-03-17 00:04:37
916
原创 【算法学习之路】9.单调栈
!单调栈的元素是严格单调递增和递减也就是说从栈底到栈顶元素的值逐渐增大或减小,多用于求解元素的左右大小边界问题:如:找左边第一个比自身大的数找左边第一个比自身小的数找右边第一个比自身大的数找右边第一个比自身小的数。
2025-03-11 15:01:14
699
原创 【算法学习之路】8.栈和队列
!队列多用于辅助,很少有单独的题目。例如图的BFS,需要队列辅助实现。重点是栈的应用以及题目。—先进先出(如左右匹配)注意:做题时,多数使用数组直接模拟栈(队列)或者直接用c++STL中的stack(queue)
2025-03-10 23:26:05
628
原创 【算法学习之路】6.递归与分治
!在数学和计算科学中是指在函数的定义中使用函数自身的方法,在将数据科学中还额外指一种通过将重复问题分解为子问题,而解决问题方法递归是一种编程技巧,一种解决问题的思维方式;分治算法很大程度上是基于递归的,解决更具体问题的算法思想;
2025-03-04 21:13:12
459
原创 【算法学习之路】5.贪心算法
总是只看眼前,并不考虑以后可能造成的影响,将一个最优决策变成多步决策过程,并在每步总是做出当前看起来是最好的选择,它所做的选择只是在某种意义上的局部最优选择可想而知,并不是所有的时候贪心法都能获得最优解,所以一般使用贪心法的时候,都要确保自己能证明其正确性。
2025-03-03 13:50:36
1412
原创 【STL】7.STL常用算法(2)
stl系列主要讲述有关stl的文章,使用STL可以大大提高程序开发的效率和代码的可维护性,且在算法比赛中,STL可以帮助我们更方便地实现各种算法。提高我们的效率。算法主要是头文件algorithm,functional,numeric组成1.algorithm是所有STL头文件中最大的一个,范围涉及到比较,交换,查找,遍历操作,复制,修改等等2.numeric体积很小,只包括几个在序列上面进行简单的数学运算的模板函数3.functional定义了一些模板类,用以声明函数对象!!
2025-03-01 00:00:13
865
原创 【STL】7.STL常用算法(1)
stl系列主要讲述有关stl的文章,使用STL可以大大提高程序开发的效率和代码的可维护性,且在算法比赛中,STL可以帮助我们更方便地实现各种算法。提高我们的效率。算法主要是头文件algorithm,functional,numeric组成1.algorithm是所有STL头文件中最大的一个,范围涉及到比较,交换,查找,遍历操作,复制,修改等等2.numeric体积很小,只包括几个在序列上面进行简单的数学运算的模板函数3.functional定义了一些模板类,用以声明函数对象!!
2025-02-26 22:57:46
551
原创 【STL】6.<map/multimap>
stl系列主要讲述有关stl的文章,使用STL可以大大提高程序开发的效率和代码的可维护性,且在算法比赛中,STL可以帮助我们更方便地实现各种算法。提高我们的效率。!!
2025-02-26 13:39:04
461
原创 【STL】5.<set/multiset>
stl系列主要讲述有关stl的文章,使用STL可以大大提高程序开发的效率和代码的可维护性,且在算法比赛中,STL可以帮助我们更方便地实现各种算法。提高我们的效率。
2025-02-24 22:59:40
583
原创 【STL】4.<list>
stl系列主要讲述有关stl的文章,使用STL可以大大提高程序开发的效率和代码的可维护性,且在算法比赛中,STL可以帮助我们更方便地实现各种算法。提高我们的效率。!!
2025-02-24 20:24:58
557
原创 【STL】3.<queue> & <deque>
stl系列主要讲述有关stl的文章,使用STL可以大大提高程序开发的效率和代码的可维护性,且在算法比赛中,STL可以帮助我们更方便地实现各种算法。提高我们的效率。!!
2025-02-06 14:00:44
407
原创 【STL】2.<vector> & <stack>
stl系列主要讲述有关stl的文章,使用STL可以大大提高程序开发的效率和代码的可维护性,且在算法比赛中,STL可以帮助我们更方便地实现各种算法。提高我们的效率。!!
2025-02-04 20:25:53
324
原创 【STL】1.<string>
stl系列主要讲述有关stl的文章,使用STL可以大大提高程序开发的效率和代码的可维护性,且在算法比赛中,STL可以帮助我们更方便地实现各种算法。提高我们的效率。TL是C++的标准模板库(Standard Template Library)的简称。它是一组提供了通用数据结构和算法的库,为C++程序提供了一种高效、可靠且易于使用的数据处理工具。由于篇幅有限,string容器还有很多函数没有介绍,未列出来的请大家自己查找。
2025-02-04 03:01:45
1132
原创 【题单】3.二分法
有时间我就会更新这个题单,简单题直接给答案,是为了让第一次写这种题的人一次独立的思考,较难题会写出难点,思考和解决方案,易错题会写出易错点,思考和解决方案。如果大家发现错误,或有好题目希望大家和我交流交流。!!洛谷P2249 【深基13.例1】查找int n, m;i < n;
2025-02-01 01:11:25
633
原创 【题单】1.前缀和与差分
有时间我就会更新这个题单,简单题直接给答案,是为了让第一次写这种题的人一次独立的思考,较难题会写出难点,思考和解决方案,易错题会写出易错点。如果大家发现错误,或有好题目希望大家和我交流交流。
2025-01-31 02:07:44
675
原创 【算法学习之路】4.简单数论(2)
快速幂是一种用于高效计算幂运算的算法。在普通的幂运算中,如果直接按照定义去计算,当指数很大时,需要进行次乘法运算。而快速幂算法可以显著减少计算次数。可以快速求n ^ x。
2025-01-29 19:35:41
1155
原创 【算法学习之路】4.简单数论(1)
!质数:质数又称素数,是指在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的自然数。例如,2、3、5、7、11 等都是质数。顾名思义质数筛就是通过某种方法将其质数给筛出来,对于某些要对质数进行操作的题目很有帮助。以上3个质数筛中欧拉筛法时间复杂度最低,所以一般情况下建议大家使用欧拉筛法。
2025-01-28 01:59:40
1131
原创 【题单】2.滑动窗口
有时间我就会更新这个题单,简单题直接给答案,是为了让第一次写这种题的人一次独立的思考,较难题会写出难点,思考和解决方案,易错题会写出易错点,思考和解决方案。如果大家发现错误,或有好题目希望大家和我交流交流。!!
2025-01-25 18:36:15
531
原创 【算法学习之路】1.前缀和与差分
前缀和可以简单的理解为数列的前n项和,是一种重要的预处理方式。(建议:在写前缀和与差分时数组的下标从1开始,后面未提到下标从0开始则是从1开始。一维前缀和(sum数组)的第i个元素就是从数组(a数组)的第一个元素开始加到第i个元素。一维前缀和比较简单,比赛一般和其他算法结合考,是用来优化代码的,求[l,r]区间的和其公式不注意很容易犯错,其他的没什么了。二维前缀和也比较简单,遇到与矩阵相关的题目很有可能就要要用到二维前缀和。原数组就是sum数组的差分数组。
2025-01-24 17:21:34
1155
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人