
算法基础
「已注销」
这个作者很懒,什么都没留下…
展开
-
算法基础06 KMP算法
文章目录题目KMP算法思路匹配过程KMP的原理构建`next`数组代码实现总结参考题目LeetCode的第28题,实现strStr(),实现字符串的匹配,实际上就是实现一个JS的indexOf函数const haystack = 'hello', needle = 'll';console.log(strStr(haystack, needle); // 2const haystack = 'aaaaa', needle = 'bba';console.log(strStr(haystack,原创 2021-06-30 10:05:47 · 93 阅读 · 1 评论 -
算法基础03 二分法
文章目录二分查找的基本问题二分查找的问题变种区间划分和缩小循环条件`if...else`的条件练习总结二分查找系列专题简单难度中等难度参考二分查找的基本问题二分查找是一种算法,其输入必须是有序的元素列表,对于包含n个元素的列表,使用二分查找最多需要$\log_2^n$步对数运算是幂运算的逆运算log_2^n = a → 2^a=n在使用大O表示法讨论运行时间时,$\log$指的都是$\log_2$(以2为底)二分法的核心思想是逐渐缩小问题规模,在练习和学习的时候,要着眼于掌握算法的思想原创 2021-04-28 16:43:03 · 128 阅读 · 0 评论 -
算法基础05 动态规划
文章目录动态规划的三大步骤实例例1:简单的一维DP例2:不同路径例3:最小路径和例4:编辑距离优化例2不同路径数的优化例4编辑距离优化文章出处:告别动态规划,连刷 40 道题,我总结了这些套路,看不懂你打我(万字长文)动态规划的三大步骤动态规划就是利用历史记录,来避免重复计算。而这些历史记录需要一些变量来保存,一般使用一维数组或二维数组来保存。(1)第一步:定义数组元素的含义(2)第二步:找出数组元素之间的关系式,当我们计算dp[n]时,是可以利用dp[n-1]、dp[n-2]…dp[1]来退原创 2021-04-26 10:26:32 · 79 阅读 · 0 评论 -
算法基础04 二叉树遍历
深度优先遍历和广度优先遍历二叉树的遍历可以使用深度优先遍历(DFS,Depth-First-Search)和广度优先遍历(BFS,Breadth-First-Search),可以使用递归算法和非递归算法实现。递归算法性能并无优势,但是可读性好,非递归算法的性能更优。深度优先遍历按照遍历的次序可以分为三种:前序遍历(dlr):根-左-右中序遍历(ldr):左-根-右后序遍历(lrd):...原创 2019-10-17 17:24:37 · 139 阅读 · 0 评论 -
算法基础01 常用排序算法
已同步到个人博客,欢迎访问。所有算法的动画演示冒泡排序(Bubble Sort)对相邻的两个对象进行比较,如果后者小于前者,把小的放前面时间复杂度:O(n²)// 对比arr中的第j+1项和第j项,如果第j+1项小于第j项,就把第j+1项和第j项调换位置。// 如果没达到最终的顺序(从小到大),就继续找,继续换,直到达到最终效果function bubbleSort(arr) {...原创 2019-02-28 11:21:34 · 75 阅读 · 0 评论 -
《算法图解》读书笔记
《算法图解》读书笔记原创 2019-09-08 18:29:08 · 478 阅读 · 0 评论