Hello 算法 1.0.0b1 JavaScript版。 在正式介绍算法之前,我想告诉你一件有趣的事:其实,你在过去已经学会了很多算法,并且已经习惯将它们 应用到日常生活中。接下来,我将介绍两个具体例子来佐证。 例一:拼积木。一套积木,除了有许多部件之外,还会附送详细的拼装说明书。我们按照说明书上一步步操作, 即可拼出复杂的积木模型。 如果从数据结构与算法的角度看,大大小小的「积木」就是数据结构,而「拼装说明书」上的一系列步骤就是 算法。 独立于编程语言,即可用多种语言实现。 1.2.2. 数据结构定义 「数据结构 Data Structure」是在计算机中组织与存储数据的方式。为了提高数据存储和操作性能,数据结构 的设计原则有: ‧ 空间占用尽可能小,节省计算机内存。 ‧ 数据操作尽量快,包括数据访问、添加、删除、更新等。 1. 引言 hello‑algo.com 10 ‧ 提供简洁的数据表示和逻辑信息,以便算法高效运行。 数据结构的设计 定的误导性。反之,「最差时间复杂度」最为实用,因为它给出了一个“效率安全值”,让我们 可以放心地使用算法。 从上述示例可以看出,最差或最佳时间复杂度只出现在“特殊分布的数据”中,这些情况的出现概率往往很 小,因此并不能最真实地反映算法运行效率。相对地,「平均时间复杂度」可以体现算法在随机输入数据下的 运行效率,用 Θ 记号(Theta Notation)来表示。 对于部分算法,我们可以简单地推算出随0 码力 | 185 页 | 14.70 MB | 1 年前3
Hello 算法 1.2.0 繁体中文 JavaScript 版技藝、到解放生產力的工業產品、再到宇宙運行的科學規律,幾乎每一件平凡或令人驚嘆的事物背後,都隱 藏著精妙的演算法思想。 同樣,資料結構無處不在:大到社會網絡,小到地鐵路線,許多系統都可以建模為“圖”;大到一個國家,小 到一個家庭,社會的主要組織形式呈現出“樹”的特徵;冬天的衣服就像“堆疊”,最先穿上的最後才能脫下; 羽毛球筒則如同“佇列”,一端放入、一端取出;字典就像一個“雜湊表”,能夠快速查找目標詞條。 . 2 0.2 如何使用本書 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 0.3 小結 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 第 1 章 初識演算法 11 1.2 演算法是什麼 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.3 小結 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 第 2 章 複雜度分析0 码力 | 379 页 | 18.78 MB | 10 月前3
2019-2021 美团技术年货 前端篇产物,但其表现差强人意, 它并不能很好地分析各个模块的体积占比。这里更推荐使用 source-map-explorer ,它的原理是通过 sourcemap 文件进行反解,能清晰地反映出每个模块的占用大 小,为 SDK 的精简提供了指引。下图展示了 FlutterWeb JS 产物的反解信息(截图 仅包含 Framework 和 Flutter_Web_SDK): 图 7 反解信息 42 > 2021年美团技术年货 栈日益规范的趋势下,React 技术栈在我们技术体系环节中的地位变得越来越重要。 在广告、营销这些推广属性的业务上,在各个终端(包括美团 App、美团外卖 App、 大众点评 App,以及站外的微信小程序、百度小程序、头条 & 抖音小程序等其他终 端)实现“一次开发,同步需求上线”的业务诉求也变得越来越多。在这样的背景下, 我们定义了 React2X 应用的核心场景: ● 面对美团内部丰富多样的技术容器 问题,提升业务的敏捷性。 ● 多场景下的同构诉求,例如在各种推广页、模块化、游戏、轻量布局差异的 PC/App 同构场景下,可以节省多端研发的人力。 最终我们的核心痛点围绕在了美团系·小程序和美团系·App 矩阵上的同一个需求 的多次开发运维上,为了解决研发人力瓶颈问题,我们需要一款“一次研发,多终端 前端 < 75 容器复用”的研发框架来提升研发效率。 调研整个前端领域,我0 码力 | 738 页 | 50.29 MB | 1 年前3
Hello 算法 1.2.0 简体中文 JavaScript 版到解放生产力的工业产品、再到宇宙运行的科学规律,几乎每一件平凡或令人惊叹的事物背后,都隐藏着精 妙的算法思想。 同样,数据结构无处不在:大到社会网络,小到地铁线路,许多系统都可以建模为“图”;大到一个国家,小 到一个家庭,社会的主要组织形式呈现出“树”的特征;冬天的衣服就像“栈”,最先穿上的最后才能脱下; 羽毛球筒则如同“队列”,一端放入、另一端取出;字典就像一个“哈希表”,能够快速查找目标词条。 为渐近复杂度分析(asymptotic complexity analysis),简称复杂度分析。 复杂度分析能够体现算法运行所需的时间和空间资源与输入数据大小之间的关系。它描述了随着输入数据大 小的增加,算法执行所需时间和空间的增长趋势。这个定义有些拗口,我们可以将其分为三个重点来理解。 ‧“时间和空间资源”分别对应时间复杂度(time complexity)和空间复杂度(space complexity)。 当算法程序运行时,正在处理的数据主要存储在内存中。图 3‑2 展示了一个计算机内存条,其中每个黑色方 块都包含一块内存空间。我们可以将内存想象成一个巨大的 Excel 表格,其中每个单元格都可以存储一定大 小的数据。 第 3 章 数据结构 www.hello‑algo.com 53 系统通过内存地址来访问目标位置的数据。如图 3‑2 所示,计算机根据特定规则为表格中的每个单元格分配 编号,确保每个内0 码力 | 379 页 | 18.47 MB | 10 月前3
Hello 算法 1.1.0 JavaScript版到解放生产力的工业产品、再到宇宙运行的科学规律,几乎每一件平凡或令人惊叹的事物背后,都隐藏着精 妙的算法思想。 同样,数据结构无处不在:大到社会网络,小到地铁线路,许多系统都可以建模为“图”;大到一个国家,小 到一个家庭,社会的主要组织形式呈现出“树”的特征;冬天的衣服就像“栈”,最先穿上的最后才能脱下; 羽毛球筒则如同“队列”,一端放入、另一端取出;字典就像一个“哈希表”,能够快速查找目标词条。 为渐近复杂度分析(asymptotic complexity analysis),简称复杂度分析。 复杂度分析能够体现算法运行所需的时间和空间资源与输入数据大小之间的关系。它描述了随着输入数据大 小的增加,算法执行所需时间和空间的增长趋势。这个定义有些拗口,我们可以将其分为三个重点来理解。 ‧“时间和空间资源”分别对应时间复杂度(time complexity)和空间复杂度(space complexity)。 当算法程序运行时,正在处理的数据主要存储在内存中。图 3‑2 展示了一个计算机内存条,其中每个黑色方 块都包含一块内存空间。我们可以将内存想象成一个巨大的 Excel 表格,其中每个单元格都可以存储一定大 小的数据。 第 3 章 数据结构 hello‑algo.com 53 系统通过内存地址来访问目标位置的数据。如图 3‑2 所示,计算机根据特定规则为表格中的每个单元格分配 编号,确保每个内存空间都0 码力 | 379 页 | 18.46 MB | 1 年前3
Hello 算法 1.0.0 JavaScript版为「渐近复杂度分析 asymptotic complexity analysis」,简称「复杂度分析」。 复杂度分析能够体现算法运行所需的时间和空间资源与输入数据大小之间的关系。它描述了随着输入数据大 小的增加,算法执行所需时间和空间的增长趋势。这个定义有些拗口,我们可以将其分为三个重点来理解。 ‧“时间和空间资源”分别对应「时间复杂度 time complexity」和「空间复杂度 space complexity」。 当算法程序运行时,正在处理的数据主要存储在内存中。图 3‑2 展示了一个计算机内存条,其中每个黑色方 块都包含一块内存空间。我们可以将内存想象成一个巨大的 Excel 表格,其中每个单元格都可以存储一定大 小的数据。 第 3 章 数据结构 hello‑algo.com 53 系统通过内存地址来访问目标位置的数据。如图 3‑2 所示,计算机根据特定规则为表格中的每个单元格分配 编号,确保每个内存空间都 临时存储当前运行的程序和正 在处理的数据 存储经常访问的数据和指令,减少 CPU 访问内存的次数 易失 性 断电后数据不会丢失 断电后数据会丢失 断电后数据会丢失 容量 较大,TB 级别 较小,GB 级别 非常小,MB 级别 速度 较慢,几百到几千 MB/s 较快,几十 GB/s 非常快,几十到几百 GB/s 价格 较便宜,几毛到几元 / GB 较贵,几十到几百元 / GB 非常贵,随 CPU 打包计价0 码力 | 376 页 | 17.57 MB | 1 年前3
Hello 算法 1.0.0b5 JavaScript版ArrayHashMap(); /* 添加操作 */ // 在哈希表中添加键值对 (key, value) map.set(12836, '小哈'); map.set(15937, '小啰'); map.set(16750, '小算'); map.set(13276, '小法'); map.set(10583, '小鸭'); /* 查询操作 */ // 向哈希表输入键 key ,得到值 value max heap」:任意节点的值 ≥ 其子节点的值。 ‧「小顶堆 min heap」:任意节点的值 ≤ 其子节点的值。 图 8‑1 小顶堆与大顶堆 堆作为完全二叉树的一个特例,具有以下特性。 ‧ 最底层节点靠左填充,其他层的节点都被填满。 ‧ 我们将二叉树的根节点称为“堆顶”,将底层最靠右的节点称为“堆底”。 ‧ 对于大顶堆(小顶堆),堆顶元素(即根节点)的值分别是最大(最小)的。 8 堆常用操作 需要指出的是,许多编程语言提供的是「优先队列 priority queue」,这是一种抽象数据结构,定义为具有优 先级排序的队列。 实际上,堆通常用作实现优先队列,大顶堆相当于元素按从大到小顺序出队的优先队列。从使用角度来看, 我们可以将“优先队列”和“堆”看作等价的数据结构。因此,本书对两者不做特别区分,统一使用“堆“来 命名。 堆的常用操作见表 8‑1 ,方法名需要根据编程语言来确定。0 码力 | 375 页 | 30.68 MB | 1 年前3
前端开发者指南(2017)管理者、项目经理等 等)来指挥。 大型 web 团队可能包含下列岗位,这些岗位尚未提及: SEO 策略师 运维工程师 API 开发者 数据库管理 QA 工程师/测试者 注意: 一个小趋势似乎正在发生:“全栈开发者” 同时担任前端和后端开发者的职责。 团队里的前端 28 全能型人才/全栈神话 图片来源:http://andyshora.com/full-stack-developers 前端面试 Questions you may get asked: 每个 JavaScript 开发者都应当知道的十个问题 前端开发面试问题 Web 前端开发小测验 为前端开发人员准备的面试问题 JavaScript 在线小测验 Questions you ask: 开发者向未来老板提问的开源问题清单 Preparing: 2017 年 Web 前端开发面试前的准备 Interview 础知识而非高级工具的原因,学习基础知识十分重要。 近来出现了很多非认证的,收费昂贵的前端编码学院和训练营。这些成为前端开发者的途 径,往往是由老师主导,由官方讲师制作的课程,它们遵循更传统的学习方式(也就是教学 大纲、测试、小测验、项目、团队项目、分数等等)。如果你正在考虑是否要报一个收费昂 贵的课程大纲,请牢记你是在互联网上!你可以在网上免费获得所有需要学习的东西。然 而,如果你需要一个老师,要求这个老师能教你如何获取并学习到真正免费的知识,而且还0 码力 | 164 页 | 6.43 MB | 1 年前3
阮一峰 《ECMAScript 6入门》 第三版2015标准》(简称 ES2015)。2016年6月,小幅修订的《ECMAScript 2016标 准》(简称 ES2016)如期发布,这个版本可以看作是 ES6.1 版,因为两者的差异 非常小(只新增了数组实例的 includes 方法和指数运算符),基本上是同一个标 准。根据计划,2017年6月发布 ES2017 标准。 因此,ES6 既是一个历史名词,也是一个泛指,含义是5.1版以后的 Number.EPSILON // 2.220446049250313e-16 Number.EPSILON.toFixed(20) // '0.00000000000000022204' 引入一个这么小的量的目的,在于为浮点数计算,设置一个误差范围。我们知道浮 点数计算是不精确的。 0.1 + 0.2 // 0.30000000000000004 0.1 + 0.2 - 0.3 // 5.551115123125783e-17 如果读取一个未知的键,则返回 undefined 。 new Map().get('asfddfsasadf') // undefined 注意,只有对同一个对象的引用,Map 结构才将其视为同一个键。这一点要非常小 心。 const map = new Map(); map.set(['a'], 555); map.get(['a']) // undefined 上面代码的 set 和 get 方0 码力 | 679 页 | 2.66 MB | 1 年前3
JavaScript 正则表达式迷你书 老姚 - v1.0此书是一本免费的书籍,您可以随便传播,但不能用于商业。 当读完后,如果你觉得此书对学习正则表达式有所帮助,慷慨如你,可以扫描下面的二维码赞赏一下。 不强求的,本来就是免费的嘛。说真的,我也不曾妄想,靠此就可以发大财,从此走上人生小巅峰。 当然,我也在想,如果能得到读者的认可,自己的小心脏肯定会砰砰的。 本书制作用到的工具 本书采用Asciidoc格式编写。 使用 Asciidoctor 构建本书电子版。 教程: • com 后续版本更新,会在这里更新: 《JavaScript 正则表达式迷你书》 感谢 由于本书是由个人文章修改而成,感谢各平台读者的支持。 感谢湖山,是他说我该把这些东西写出来的。 感谢小不,他在多方面给予了我帮助,封面是他设计的。 感谢小鱼二,他对全书进行了仔细地校对,并提出了相应的修改意见。 感谢丹迪的支持,他为我设计了多个封面,风格比较前卫,留给后续版本。 最后,尤其要感谢 Dark_Night。 推荐序 正则表达式一直是我的一个痛点,很多人肯定也跟我一样存在类似的情况。但是正则表达式的使用范 围非常广泛,尤其在表单校验这个场景下更是不可或缺。这本小书用一个一个的小例子深入浅出地示 范了正则表达式的典型用法,值得一读。 — 大漠穷秋 我连续看了老姚在专栏的正则系列的前三篇,毫不犹豫就打赏了,而且顺藤摸瓜认识了老姚,没想到 老姚对学习本身研究颇深,当晚第一0 码力 | 89 页 | 3.42 MB | 11 月前3
共 18 条
- 1
- 2













