数据结构和算法
随风丶逆风
这个作者很懒,什么都没留下…
展开
-
JS实现数组扁平化的方法
一、缘由在github上看到一道题,《将数组扁平化并去除其中重复数据,最终得到一个升序且不重复的数组》,要求如下:已知如下数组:var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];编写一个程序将数组扁平化去并除其中重复部分数据,最终得到一个升序且不重复的数组二、方法...原创 2019-10-11 21:03:05 · 285 阅读 · 0 评论 -
字符串匹配算法——朴素(暴力)算法和KMP算法的JS实现
一、朴素(暴力)算法主字符串与模式字符串分别使用一个指针去移动匹配,根据主字符串的指针是否回溯的方式, 暴力解法也存在两种思路。1.1 主字符串的指针不回退在外层循环的时候,指针每次只前进一位,且不被内层循环回退,代码实现如下。/** * 这种解法是保证i不动,无需回溯 * @param mStr 主串 * @param sStr 子串 * */function fin...原创 2018-08-26 16:50:19 · 2271 阅读 · 0 评论 -
最小生成树算法——Prim算法和Kruskal算法的JS实现
之前都是看书,大部分也是c++的实现,但是搞前端不能忘了JS啊,所以JS实现一遍这两个经典的最小生成树算法。一、权重图和最小生成树权重图:图的边带权重最小生成树:在连通图的所有生成树中,所有边的权重和最小的生成树本文使用的图如下:它的最小生成树如下:二、邻接矩阵邻接矩阵:用来表示图的矩阵就是邻接矩阵,其中下标表示顶点,矩阵中的值表示边的权重(或者有无边,方向等)...原创 2018-08-26 21:35:00 · 6449 阅读 · 0 评论 -
最短路径算法——Dijkstra算法的JS实现
一、Dijkstra算法的思路Dijkstra算法是针对单源点求最短路径的算法。其主要思路如下:1. 将顶点分为两部分:已经知道当前最短路径的顶点集合Q和无法到达顶点集合R。2. 定义一个距离数组(distance)记录源点到各顶点的距离,下标表示顶点,元素值为距离。源点(start)到自身的距离为0,源点无法到达的顶点的距离就是一个大数(比如Infinity)。3. 以距离数...原创 2018-08-27 00:01:21 · 7523 阅读 · 5 评论