Hello 算法 1.1.0 TypeScript版
“如果我当年学数据结构与算法的时候有《Hello 算法》,学起来应该会简单 10 倍!” ——李沐,亚马逊资深首席科学家 计算机的出现给世界带来了巨大变革,它凭借高速的计算能力和出色的可编程性,成为了执行算法与处理数 据的理想媒介。无论是电子游戏的逼真画面、自动驾驶的智能决策,还是 AlphaGo 的精彩棋局、ChatGPT 的自然交互,这些应用都是算法在计算机上的精妙演绎。 事实上,在计算机问世之前, 2 张扑克已经有序。 3. 不断循环步骤 2. ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 库函数中都有插入排序的身影。 例三:货币找零。假设我们在超市购买了 69 元的商品,给了收银员 100 元,则收银员需要找我们 31 元。他 会很自然地完成如图 2‑5 尾递归过程 Tip 请注意,许多编译器或解释器并不支持尾递归优化。例如,Python 默认不支持尾递归优化,因此即 使函数是尾递归形式,仍然可能会遇到栈溢出问题。 3. 递归树 当处理与“分治”相关的算法问题时,递归往往比迭代的思路更加直观、代码更加易读。以“斐波那契数列” 为例。 Question 给定一个斐波那契数列 0, 1, 1, 2, 3, 5, 8, 13, …0 码力 | 383 页 | 18.49 MB | 1 年前3Hello 算法 1.2.0 简体中文 TypeScript 版
“如果我当年学数据结构与算法的时候有《Hello 算法》,学起来应该会简单 10 倍!” ——李沐,亚马逊资深首席科学家 计算机的出现给世界带来了巨大变革,它凭借高速的计算能力和出色的可编程性,成为了执行算法与处理数 据的理想媒介。无论是电子游戏的逼真画面、自动驾驶的智能决策,还是 AlphaGo 的精彩棋局、ChatGPT 的自然交互,这些应用都是算法在计算机上的精妙演绎。 事实上,在计算机问世之前, 2 张扑克已经有序。 3. 不断循环步骤 2. ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 库函数中都有插入排序的身影。 例三:货币找零。假设我们在超市购买了 69 元的商品,给了收银员 100 元,则收银员需要找我们 31 元。他 会很自然地完成如图 2‑5 尾递归过程 Tip 请注意,许多编译器或解释器并不支持尾递归优化。例如,Python 默认不支持尾递归优化,因此即 使函数是尾递归形式,仍然可能会遇到栈溢出问题。 3. 递归树 当处理与“分治”相关的算法问题时,递归往往比迭代的思路更加直观、代码更加易读。以“斐波那契数列” 为例。 Question 给定一个斐波那契数列 0, 1, 1, 2, 3, 5, 8, 13, …0 码力 | 383 页 | 18.49 MB | 10 月前3Hello 算法 1.0.0b5 TypeScript 版
2 张扑克已经有序。 3. 不断循环步骤 2. ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 库函数中都存在插入排序的身影。 例三:货币找零。假设我们在超市购买了 69 元的商品,给了收银员 100 元,则收银员需要找我们 31 元。他 会很自然地完成如图 24 图 2‑5 尾递归过程 请注意,许多编译器或解释器并不支持尾递归优化。例如,Python 默认不支持尾递归优化,因此即使函数 是尾递归形式,但仍然可能会遇到栈溢出问题。 3. 递归树 当处理与“分治”相关的算法问题时,递归往往比迭代的思路更加直观、代码更加易读。以“斐波那契数列” 为例。 � 给定一个斐波那契数列 0, 1, 1, 2, 3, 5, 8, 13, … ,求该数列的第 本质上看,递归体现“将问题分解为更小子问题”的思维范式,这种分治策略是至关重要的。 ‧ 从算法角度看,搜索、排序、回溯、分治、动态规划等许多重要算法策略都直接或间接地应用这种思维 方式。 ‧ 从数据结构角度看,递归天然适合处理链表、树和图的相关问题,因为它们非常适合用分治思想进行分 析。 2.3 时间复杂度 运行时间可以直观且准确地反映算法的效率。如果我们想要准确预估一段代码的运行时间,应该如何操作 呢? 1.0 码力 | 378 页 | 30.70 MB | 1 年前3TypeScript 4.0 使用手册
首先安装Babelify和ES2015的Babel预置程序。 和Uglify一样,Babelify也会混淆代码,因此我 们也需要vinyl-buffer和gulp-sourcemaps。 默认情况下Babelify只会处理扩展名 为 .js , .es , .es6 和 .jsx 的文件,因此我们需要添加 .ts 扩展名到Babelify选 项。 1. npm install --save-dev ├─ dist/ 3. └─ src/ 4. └─ components/ TypeScript文件会放在 src 文件夹里,通过TypeScript编译器编译,然后经webpack处理,最 后生成一个 main.js 文件放在 dist 目录下。 我们自定义的组件将会放在 src/components 文 件夹下。 下面来创建基本结构: 1. mkdir src 2 Redux依靠一个统一且不可变的数据存储来同步数据,并且更新那里的数据时会触发应用的更新渲染。 state的更新是以一种不可变的方式进行,它会发布一条明确的action消息,这个消息必须被 reducer函数处理。 由于使用了这样明确的方式,很容易弄清楚一个action是如何影响程序的 state。 MobX借助于函数式响应型模式,state被包装在了可观察对象里,并通过props传递。 通过将state0 码力 | 683 页 | 6.27 MB | 1 年前3TypeScript Handbook(中文版)
首先安装Babelify和ES2015的Babel预置程序。 和Uglify一样,Babelify也会混淆代 码,因此我们也需要vinyl-buffer和gulp-sourcemaps。 默认情况下Babelify只会处理 扩展名为 .js , .es , .es6 和 .jsx 的文件,因此我们需要添加 .ts 扩展名 到Babelify选项。 npm install --save-dev babelify proj/ ├─ dist/ └─ src/ └─ components/ TypeScript文件会放在 src 文件夹里,通过TypeScript编译器编译,然后经 webpack处理,最后生成一个 bundle.js 文件放在 dist 目录下。 我们自定义的 组件将会放在 src/components 文件夹下。 下面来创建基本结构: mkdir src cd src Redux依靠一个统一且不可变的数据存储来同步数据,并且更新那里的数据时会触 发应用的更新渲染。 state的更新是以一种不可变的方式进行,它会发布一条明确 的action消息,这个消息必须被reducer函数处理。 由于使用了这样明确的方式,很 容易弄清楚一个action是如何影响程序的state。 MobX借助于函数式响应型模式,state被包装在了可观察对象里,并通过props传 递。 通过将st0 码力 | 557 页 | 7.48 MB | 1 年前3Hello 算法 1.0.0b1 TypeScript 版
2.3. 两种实现对比 与栈的结论一致,在此不再赘述。 5.2.4. 队列典型应用 ‧ 淘宝订单。购物者下单后,订单就被加入到队列之中,随后系统再根据顺序依次处理队列中的订单。在 双十一时,在短时间内会产生海量的订单,如何处理「高并发」则是工程师们需要重点思考的问题。 ‧ 各种待办事项。任何需要实现“先来后到”的功能,例如打印机的任务队列、餐厅的出餐队列等等。 5.3. 双向队列 对 hello‑algo.com 96 Figure 7‑10. 给定数组对应多种二叉树可能性 为了解决此问题,考虑按照完美二叉树的形式来表示所有二叉树,即在序列中使用特殊符号来显式地表示“空 位”。如下图所示,这样处理后,序列(数组)就可以唯一表示二叉树了。 /* 二叉树的数组表示 */ // 直接使用 null 来表示空位 let tree: (number | null)[] = [1, 2, 3, 4 与元素入堆操作类似,堆顶元素出堆操作的时间复杂度为 ?(log ?) 。 // === File: my_heap.ts === /* 元素出堆 */ poll(): number { // 判空处理 if (this.isEmpty()) throw new RangeError('Heap is empty.'); // 交换根结点与最右叶结点(即交换首元素与尾元素) this.swap(00 码力 | 186 页 | 14.71 MB | 1 年前3TypeScript 多场景设计方案及应用实践
极简的 for FaaS 场景 的⽀支持 IoC 的最⼩小框架 版本。 Selected TS 从 Web 到 FaaS ⾸首先是⼊入⼝口的变化,装饰器器的不不同 @func,⽤用⽼老老办法处理理。 场景切换,代码⼀一致 TS 从 Web 到 FaaS 场景切换,代码⼀一致 TS 跨平台的考虑 1、调⽤用⽅方式的不不同 2、数据参数的不不同 3、描述⽂文件的不不同 不不0 码力 | 95 页 | 8.28 MB | 1 年前3
共 7 条
- 1