延长后的春节假期即将结束,全国还笼罩在新型肺炎带来的恐慌中,已经到来的 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
,它是一个回调函数,这个回调函数接收四个参数: