延长后的春节假期即将结束,全国还笼罩在新型肺炎带来的恐慌中,已经到来的 2020 年让人感觉提不起劲。
回顾 2019 年,发现自己原先计划中的目标大多依旧没能完成,有点惭愧。
本文翻译自 Data Structures and Algorithms (DSA) 的系列文章有关图的章节,Google 翻译真好用。
在本篇文章中,我们将会探索非线性的数据结构——图,我们将会涉及到图的核心概念以及典型应用。
你可能现在就在使用那些用到了图和树这些数据结构的程序。比方说,你想要知道家和公司之间的最短距离,那么你就可以使用图算法来计算出答案。我们将会在后面探索这个以及一些其它有趣的挑战。
下面是我们将会在本文中介绍的一些操作:
| 邻接表 | 邻接矩阵 | |
|---|---|---|
| Space | O(V + E) | O(V^2) |
| addVertex | O(1) | O(V^2) |
| removeVertex | O(V + E) | O(V^2) |
| addEdge | O(1) | O(1) |
| removeEdge (using Array) | O(E) | O(1) |
| removeEdge (using HashSet) | O(1) | O(1) |
| getAdjacents | O(E) | O(V) |
| isAdjacent (using Array) | O(E) | O(1) |
| isAdjacent (using HashSet) | O(1) | O(1) |
如题所示 :angry:。
附上项目地址:QiuReader —— 一个简单的epub阅读器 。
源码版本 1.4.4
ECMAScript 5 提供了两个归并数组的方法:reduce() 和 reduceRight()。这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。其中,reduce() 方法从数组的第一项开始,逐个遍历到最后。而 reduceRight() 则从数组的最后一项开始,向前遍历到第一项。
arr.reduce(callback,[initialValue]) 接收两个参数,第一个参数为一个回调函数,数组中的每个元素都会被传入此函数中迭代;第二个参数为一个可选的初始值,它的值会被作为回调函数的第一个参数传入。
这里重点在于理解 reduce() 的第一个参数 callback,它是一个回调函数,这个回调函数接收四个参数: