![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
ArthurHsing
前端菜鸟
展开
-
数组去重的几种实现方式
// 数组去重1.利用indexOf返回最先碰到的下标的特性const arr = [2, 4, 5, 2, 4, 7, 9, 1, 9, 500];function getUniqueArray(arr) { const result = arr.filter((v, i) => { return arr.indexOf(v) === i; }); return result;}console.log(getUniqueArray(arr));// 数组去重2.构造一原创 2021-03-12 16:45:17 · 176 阅读 · 0 评论 -
剑指offer19题(正则表达式匹配) javascript语言描述
const isMatch = (s, p) => { const n = s.length; const m = p.length; const dp = []; for (let i = 0; i <= n; i++) { dp[i] = []; for (let j = 0; j <= m; j++) { dp[i][j] = -1; } } return solve(0, 0, s, p, dp) === 1;};c原创 2020-12-22 15:45:39 · 91 阅读 · 0 评论 -
javascript动态规划之缓存与递归优化
动态规划的适用性1.最优子结构2.无后效性3.子问题的重叠性例题:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。这个问题的最直白的写法就是: const numWays = function (n) { if (n < 0) { return 0n; //BigInt表示法 } if (n === 0){ return 1n //BigInt表示法 } const原创 2020-12-05 12:47:50 · 220 阅读 · 0 评论 -
JavaScript的尾调用优化详解
尾调用优化原创 2020-10-05 15:19:55 · 337 阅读 · 0 评论 -
javascirpt排序算法动图
https://visualgo.net/zh/sorting原创 2020-10-25 09:47:52 · 92 阅读 · 0 评论 -
javascript手撕kruskal算法
kruskal是一种求最小生成树的贪心算法,与prim算法的以点为寻找目标不同,kruskal算法是以边为寻找目标,核心思想很简单,每次找到最小的边,把这些边串起来生成树就可以了,只是这个过程中要注意避免环的产生,以下是js代码const INF = Number.MAX_SAFE_INTEGER;const initializeCost = graph => { const cost = []; const { length } = graph; for (let i = 0; i原创 2020-10-24 11:35:30 · 256 阅读 · 2 评论 -
javascript手撕prim算法
prim算法是求求最小生成树的一种贪心算法,而且代码与dijkstra算法非常类似,不同的地方是dijkstra算法每次寻找和更新是所有已知点的距离到源点的最小距离, 而prim算法每次寻找的是现有最小生成树的所有的不在生成树上的临近点的最小距离。const INF = Number.MAX_SAFE_INTEGER;const minKey = (key, visited) => { let min = INF; let minIndex = -1; for (let i = 0;原创 2020-10-22 10:24:52 · 164 阅读 · 0 评论 -
javascript手撕Floyd-Warshall算法(带路径)
folyd-warshall是求最短路径的算法,它的功能比较强大,可以求任意两点的最短距离。它是一种动态规划的算法,floyd-warshall与dijkstra算法有着很大的区别:1.结果上,dijkstra是求得一点到任一点的最短距离,而floyd-warshall的结果是任意两点之间的最短距离2.思想上,dijkstra是从给定源点开始,比较源点到当前点所有可达的点的距离,找出最小的距离,这个最小的距离上的最后一个点,就是源点到最后一个点的最短距离,然后再把最后一个点作为当前点进行迭代,每次都要原创 2020-10-21 19:53:25 · 260 阅读 · 0 评论 -
javascript 手撕dijkstra算法,求最短距离和最短路径(超详细注释)
图是用一个二维数组表示的,0表示不相邻或者本顶点,不为0的表示到相邻点的距离const INF = Number.MAX_SAFE_INTEGER;// 从当前的已知距离中,找出最短路径,返回最短路径的最后一个点const minRoute = (dist, visited) => { let minIndex = -1; let min = INF; for (let i = 0; i < dist.length; i++) { if (!visited[i] &am原创 2020-10-19 10:43:30 · 916 阅读 · 0 评论