数据结构和算法
文章平均质量分 53
个人学习数据结构和算法的理解总结。
georgechen1024
一头蛮牛
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法之广度优先搜索
广度优先算法适用于遍历无向图,可以按照每个节点被发现的顺序,不重复地进行遍历;还有就是一般题目需要查找最短路径时,也可以用广度优先搜索来解决,因为它是从当前层开始一层一层遍历,也就是可以找到达目标点的最短路径(两点间直线最短)。其实这两种用法区别不大,如果给遍历无向图加以一个终止条件,也就是寻找最短路径。原创 2024-03-23 15:32:42 · 628 阅读 · 0 评论 -
数据结构之树状数组
适合用来求某段区间的和,这里或许有疑惑求某一段区间和,那么用前缀和算法就好了啊,为什么还要学树状数组,因为树状数组相较于前缀和,它可以动态求和,也就是说给定我们一个数组,如果问我们某一区间和是多少,我们可以很快用前缀和解决,但是如果它让我们把索引为3,5,9的数值都加上2,再询问某一段区间和时,用前缀和就很费力了,每一次修改数组的值,都需要重新更改该数后面所有数,如果修改的次数很大可想而知时间复杂度得上几个台阶,但是树状数组可以比较快速解决。原创 2024-03-20 23:47:04 · 463 阅读 · 1 评论 -
算法之枚举
枚举法,我个人感觉就是暴力,就相当于把所有可能罗列出来,再进行判断是否符合条件,再筛选纳入,但是有时候感觉有些题也只能枚举,然后在此基础上优化。原创 2024-03-19 00:21:39 · 392 阅读 · 1 评论 -
算法之前缀和
当需要求某段区间的和时,前缀和可以快速求和,特别是多次求多段区间和的问题,前缀和可以避免重复计算从而提高效率。一般用数组来存储前缀和,因为sumArr[n] = sumArr[n-1] + arr[n],所以数组索引从1开始(sumArr代表[arr[1],arr[n]]区间的和)。原创 2024-03-17 00:08:38 · 404 阅读 · 1 评论 -
算法之二分
当题目给定一个区间,而且能够确定答案就在区间的内,这个时候就适合二分法求解答案,查找效率很高的一个算法,二分法有整数二分和实数二分,实数二分比较简单,印象中高中数学就学过了,下面主要讲整数二分,整数二分要区分答案是在答案区间的左端点还是右端点,如果是左端点就先缩小左边,反之先缩小右边,如果是先缩右边需要在二分时加一再除以二(确保mid总是偏向区间的右侧)。原创 2024-03-16 22:20:10 · 401 阅读 · 1 评论 -
算法之递推
递推一般用在有固定的公式的情况下,然后再结合递归去执行这个公式,其实有点类似动态规划的状态方程,它和递归的区别在于,它答案是无限的然后按要求递归到哪一步。原创 2024-03-16 18:01:46 · 426 阅读 · 1 评论 -
算法之递归
对于一个科班的学生来说,数据结构与算法是必修的一门课,我记得我们的数据结构与算法这门课是在大一下(应该没记错,要不然就是大二上)就开了,初学的时候数据结构还好,算法那真的是上的人难受,而且那个时候懒死了,算法课后都没有自己总结也没自己敲,就听了个课,所以这一片对于我来说还是很空白的。原创 2024-03-16 16:35:48 · 550 阅读 · 1 评论
分享