二分查找 —— 对数级算法通用解题法 前言 二分查找,又叫二分枚举是在一个单调有序的数组中查找某个元素的搜索算法。原理比较简单,基本说一遍就知道是怎么一回事。然而,实际过程中,很容易写错,比如: 1)左区间是加一还是不加?… 阅读全文 赞同 20 ...
专栏介绍 已更内容 主要更新数论相关文章 专栏作者 英雄哪里出来 让天下没有难学的算法 关注 知乎影响力 获得2953 次赞同 · 762 次喜欢 · 4863 次收藏 已更内容 · 23 置顶《夜深人静写算法》数论总纲 [已更新](01) 整除[已更新](02) 素数[已更新](03) 素数筛选[已更新](04) 算术基本定理[已更...
Dijkstra算法是最经典的最短路算法,用于计算正权图的单源最短路(Single Source Shortest Path,源点给定,通过该算法可以求出起点到所有点的最短路),它是基于这样一个事实:如果源点到x点的最短路已经求出,并且保存在d[x] ( 可以将它理解为D(s, x) )上,那么可以利用x去更新x能够直接到达的点的最短路。即: d...
但是现在我们不使用这种思路。 我们只需要先明白一点:我们通过a的差分数组b,可以得到a数组本身。其实也可以理解为一种映射。 一维差分 例子引入 这里给出一个差分数组的实际使用案例 我们有a数组和他的差分数组b,现在我们需要给a数组的[l , r]区间内的数都加c。正常情况下我们需要进行一次遍历,给区间每一个数都...
如图2所示,N!的递归计算看成是一个深度优先遍历的过程,并且每次回溯的时候会将遍历的结果返回给上一个结点(这只是一个思想,并不代表这是求N!的高效算法)。 图2 b. 求斐波那契数列的第N项; 令g(N) = g(N-1) + g(N-2), (N > 2),其中g(1) = g(2) = 1,同样可以利用图论的思想,从结点N向...
3、ST算法 五、最近公共祖先相关题集整理 一、引例 1、树-结点间最短距离 【例题1】给定一棵n(n <= 100000)个结点的树,以及m(m <= 100000)条询问(u, v),对于每条询问,求u和v的最短距离? 我们知道,一个普通的无向图求两点间最短距离可以采用单源最短路,将时间复杂度大致控制在O(nlogn),但是当询...
夜深人静写算法(一)-搜索入门 2、算法描述 数据结构基础:前向星建边,建两张图:原图G和反图G'(反图即对原图的每条边在反图上建立反向边)。 a)对反图G'求一次后序遍历,按照遍历完毕的先后顺序将所有顶点记录在数组order中。 b)按照order数组的逆序,对原图G求一次先序遍历,标记连通分量。
夜深人静写算法(三)上文提到的两个函数sumx和addxv都是用递归实现的并且都用到了一个函数叫lowbitx表示的是其中k为x的二进制表示末尾0的个数那么最简单的实现办法就是通过位运算的右移循环判断最后一位是0还是1从而统计末尾0的个数一旦发现1后统计完毕计数器保存的值就是k当然这样的做法总的复杂度为ologn一...
夜深人静写算法(二十三)- 最短路 “言之,用一个数组c[i]来记录i这个点入队的次数,所有的c[i]必定都小于等于n” 这里的"小于等于"应是写错了。 入队c[i]次的点的最短路包含c[i]+1个顶点。 比如邻s的点,边权足够小,那么它只会入队1次,包含2个顶点。
深度优先搜索 2、广度优先搜索 三、数论 四、计算几何 五、字符串匹配 六、高级数据结构 七、杂项算法 《夜深人静写算法》总纲 零、十年磨一剑 以十年为期,更新此文,此乃第一年… 一、动态规划 文章链接 难度等级 推荐阅读 夜深人静写算法(二)- 动态规划入门 ★☆☆☆★★★ 夜深人静写算法(二十六... 查...