![](https://img-blog.csdnimg.cn/direct/589c6ef901c14812b4521c06e370585e.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法
文章平均质量分 91
分享学习算法的心得
t04bf
与天斗其乐无穷
展开
-
递归、搜索与回溯算法——穷举vs暴搜vs深搜
T04BF👋专栏:🫵 小比特 大梦想此篇文章与大家分享递归、搜索与回溯算法关于穷举vs暴搜vs深搜的专题如果有不足的或者错误的请您指出!原创 2024-04-20 00:46:34 · 1026 阅读 · 0 评论 -
递归、搜索与回溯算法——二叉树的深搜
此篇文章与大家分享分治递归、搜索与回溯算法中关于的专题如果有不足的或者错误的请您指出!原创 2024-04-18 09:21:01 · 1047 阅读 · 0 评论 -
递归、搜索与回溯算法——递归
此篇文章与大家分享递归,搜索与回溯算法关于递归的专题如果有不足的或者错误的请您指出!原创 2024-04-16 19:30:50 · 755 阅读 · 0 评论 -
算法——栈
此篇文章与大家分享关于栈相关的算法如果有不足的或者错误的请您指出!原创 2024-04-12 15:09:56 · 720 阅读 · 0 评论 -
中缀表达式转后缀表达式、后缀表达式计算得出结果(浮点型也可以计算)(仅正数)
中缀表达式转后缀表达式、后缀表达式计算得出结果(浮点型也可以计算)原创 2023-12-04 22:40:09 · 946 阅读 · 13 评论 -
算法——字符串
此篇文章与大家分享字符串相关算法,如果有不足的或者错误的请您指出!原创 2024-04-08 17:40:19 · 1039 阅读 · 0 评论 -
算法——哈希表
哈希实际上可以简单认为是一个存储数据的容器,用于快速查找某个元素,时间复杂度仅为O(1),怎么有时候需要频繁查找某一个数的时候,就可以使用哈希表那我们怎么使用哈希表呢??分成两种,一种是使用编程语言自带的容器,如java里面的Map和Set另外一种是我们自定义一个数组来作为哈希表,这种通常出现在我们对字符串中的字符进行操作的时候,我们可以自定义一个int[26] (如果都是小写字符),或者是当数据范围比较小的时候,使用数组模拟哈希表往往是更快的。原创 2024-04-07 19:15:43 · 873 阅读 · 1 评论 -
算法——链表(二)
此篇文章与大家分享链表专题的第二篇,大部分知识在第一篇中已经呈现对于归并排序在我个人主页专栏 有详细的介绍如果有不足的或者错误的请您指出!原创 2024-04-07 09:10:51 · 963 阅读 · 0 评论 -
算法——链表(1)
在力扣上,基本提供的链表题目都是"无头的",但是针对无头链表,我们最怕的就是参数链表是一个空链表,就容易出现对null的访问.当我们引入虚拟头结点后,我们并不关心这个"头结点"里面放的是什么值,而这个节点只是起到一个哨兵的左右举一个例子,如果我们要合并两个链表,引入第三链表将两个链表合并在没有引入虚拟头结点的情况下:那么我们的第三个链表就要先判断是否已经有节点了??如果有,直接插在后面即可;如果没有就要将插入的节点作为头结点但是如果我们引入虚拟头结点。原创 2024-04-06 20:32:10 · 785 阅读 · 0 评论 -
算法---分治(归并排序)
T此篇文章与大家分享分治算法关于归并排序的专题对于归并排序在我个人主页专栏 有详细的介绍如果有不足的或者错误的请您指出!原创 2024-04-05 10:09:25 · 798 阅读 · 0 评论 -
算法——分治(快速排序)
期待您的关注!!!T04BF👋专栏:🫵 小比特 大梦想此篇文章与大家分享分治算法关于排序排序的专题对于快速排序在我个人主页专栏 有详细的介绍,此专题对快排进行了优化操作,并介绍了优化后的快排的几种运用如果有不足的或者错误的请您指出!原创 2024-04-04 14:56:03 · 1170 阅读 · 0 评论 -
排序——非基于比较的排序
本专栏和大家分享关于排序的算法,其中有插入排(直接插入排序和希尔排序)、选择排序(直接选择排序和堆排)、交换排序(冒泡排序和快速排序)、归并排序以及其他非基于比较的排序本文与大家分享非基于比较的排序。原创 2024-03-31 20:02:25 · 312 阅读 · 0 评论 -
排序——归并排序
本专栏和大家分享关于排序的算法,其中有插入排(直接插入排序和希尔排序)、选择排序(直接选择排序和堆排)、交换排序(冒泡排序和快速排序)、归并排序以及其他非基于比较的排序本文与大家分享归并排序。原创 2024-03-31 12:03:49 · 808 阅读 · 0 评论 -
排序——交换排序(冒泡排序与快速排序)
本专栏和大家分享关于排序的算法,其中有插入排(直接插入排序和希尔排序)、选择排序(直接选择排序和堆排)、交换排序(冒泡排序和快速排序)、归并排序以及其他非基于比较的排序本文与大家分享交换排序。原创 2024-03-31 11:56:21 · 707 阅读 · 0 评论 -
排序——选择排序(直接选择排序和堆排)
本专栏和大家分享关于排序的算法,其中有插入排(直接插入排序和希尔排序)、选择排序(直接选择排序和堆排)、交换排序(冒泡排序和快速排序)、归并排序以及其他非基于比较的排序本文与大家分享选择排序。原创 2024-03-31 11:38:32 · 549 阅读 · 0 评论 -
排序—插入排序
本专栏和大家分享关于排序的算法,其中有插入排(直接插入排序和希尔排序)、选择排序(直接选择排序和堆排)、交换排序(冒泡排序和快速排序)、归并排序以及其他非基于比较的排序本文与大家分享插入排序。原创 2024-03-31 11:21:53 · 1027 阅读 · 0 评论 -
算法——模拟专题(一篇搞定)
此篇文章为大家带来算法专栏的模拟专题模拟算法本质就是比葫芦画瓢,思路比较简单,就是将演算流程转化为代码。原创 2024-03-25 15:52:19 · 1014 阅读 · 0 评论 -
算法——位运算(一篇搞定)
此篇文章给大家分享一些关于位运算算法的题目,在开篇还讲述了常见位运算的公式以及题目,如果对您有帮助,麻烦点个关注,如有错误,请您指出!原创 2024-03-19 16:24:37 · 872 阅读 · 0 评论 -
算法——前缀和之除自身以外数组的乘积、和为K的子数组、和可被K整除的子数组、连续数组、矩阵区域和
这几道题对于我们前面讲过的一维、二维前缀和进行了运用,包含了面对特殊情况的反操作。原创 2024-03-16 21:51:31 · 1195 阅读 · 1 评论 -
算法——前缀和之一维前缀和模版、二维前缀和模版、寻找数组中心下标
此篇文章给大家分析关于前缀和算法的基本用法我们要牢记一个思想:前缀和算法适合用于快速用来求数组中其中某一个的和。原创 2024-03-14 11:14:09 · 893 阅读 · 1 评论 -
算法——二分查找(一篇搞定)
二分查找算法并不是针对在数组有序的情况下,通过后面的题我们就会知道实际上只要是满足"二段性"的题目,都可以通过二分查找算法来实现我们可以分成三种情况(1)朴素的二分查找(最简单,但是基本不涉及)(2)查找左边界的二分查找(3)查找右边界的二分查找第二第三基本是万能的,但细节较多. - 力扣(LeetCode)实际上这道题恰恰将我们的二分查找分成查找左边界的二分查找和查找右边界的二分查找。原创 2024-03-13 14:52:22 · 930 阅读 · 0 评论 -
算法——滑动窗口之最小覆盖子串
我们找到满足条件的这个子串后,就要将left++,然后right回到left的位置开始遍历,寻找下一个满足条件的子串,期间用哈希表来统计,判断是否满足条件。我们用in来表示进窗口的元素,out来表示出窗口的元素,hash1记录t中每个字符的个数,hash2记录窗口中每个字符的个数。(1)实际上当找到一个满足条件的子串后,right没必要回到left的位置,因为哈希表中已经存有left到right的信息。对于判断的优化:我们在前面的题目做过类似的判断优化方法,即用count来记录有效字符的个数。原创 2024-03-10 20:59:44 · 415 阅读 · 1 评论 -
算法——滑动窗口之找到字符串中所有的字母异位词,串联所有单词的子串
当我们判断前三个字符后,没必要将right回到b的位置再继续列举,因为实际上我们下一个要判断的是字符串"bae",但是我们在hash2中已经记录了b a的信息,我们只需将c移除hash2,再将a移入hash2即可.这就是滑动窗口的问题,与前面的题目不同的是,这里我们维护的窗口长度是固定的。在此步骤判断的时候,如果按照上述的步骤来,我们可以建立两个长度为26的数组作为hash表,每次变量两个数组来判断是否相同,加上滑动窗口,时间复杂度为O(26n),即O(n)原创 2024-03-10 16:13:23 · 701 阅读 · 1 评论 -
算法——双指针之双数之和,三数之和,四数之和
(5)我们会发现,当数组是递增的时候,如果target是整数,那么target后面的数必定是正数,那么不可能会有两数之和等于-target的情况,那么后面就都不用考虑了。同样,i此题的暴力解法就是一一枚举,每次比较三个数的和与target的值是否相等,但是时间复杂度来到O(n^3),再加上题目要求的去重,时间复杂度就很大;(2)前面我们做过两数之和的题目,那么很容易想到的就是:先固定一个数,在这个数之后,找到两数之和为这个数的相反数的结果即可,那么就用双指针算法。原创 2024-02-25 21:12:48 · 452 阅读 · 0 评论 -
算法——双指针之快乐数、盛水最多的容器、有效三角形的个数
而但我们将3个数先排序后,如2 2 3,那么我们只需要比较2 + 2 > 3 即可,因为2 +2这三个数里面最小的两个数的和,都大于最大的第三边,那么其他两种情况一定成立,那么我们在3层循环中只需要比较一次即可,时间复杂度为O(n^3),加上排序的时间复杂度也小于先前的O(3 * n^3)就拿这个例子来说,我们在比较完4后,下一个比较2,但是2比4小,体积6~2的体积肯定没有6~4的大,那么2就不用比较,right--,直到有一个比4大,才开始比较.右边小,记录下体积,right--即可。原创 2024-02-24 11:18:15 · 731 阅读 · 0 评论 -
算法——双指针之移动0和复写0
常⻅的双指针有两种形式,⼀种是对撞指针,⼀种是左右指针。:⼀般⽤于顺序结构中,也称左右指针。• 对撞指针从两端向中间移动。⼀个指针从最左端开始,另⼀个从最右端开始,然后逐渐往中间逼近。• 对撞指针的终⽌条件⼀般是两个指针相遇或者错开(也可能在循环内部找到结果直接跳出循环),也就是:◦ left == right (两个指针指向同⼀个位置)◦ left > right (两个指针错开):⼜称为⻳兔赛跑算法,其基本思想就是使⽤两个移动速度不同的指针在数组或链表等序列结构上移动。原创 2024-02-23 11:34:19 · 662 阅读 · 2 评论