JavaScript 正则表达式迷你书 老姚 - v1.1. . 9 1.3.2. 贪婪匹配与惰性匹配. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.4. 多选分支 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.5. 案例分析 . . . . 26 3.1. 分组和分支结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.1.1. 分组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.1.2. 分支结构 . . . . 42 4.3.2 惰性量词. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.3.3 分支结构. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.4. 本章小结 . . . .0 码力 | 89 页 | 3.42 MB | 11 月前3
JavaScript 正则表达式迷你书 老姚 - v1.0. . 9 1.3.2. 贪婪匹配与惰性匹配. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.4. 多选分支 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.5. 案例分析 . . . . 26 3.1. 分组和分支结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.1.1. 分组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.1.2. 分支结构 . . . . 42 4.3.2 惰性量词. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.3.3 分支结构. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.4. 本章小结 . . . .0 码力 | 89 页 | 3.42 MB | 11 月前3
2019-2021 美团技术年货 前端篇Native 工程中 TSLint 静态检查工具的探索之路 589 ESLint 在中大型团队的应用实践 610 美团 iOS 工程 zsource 命令背后的那些事儿 627 客户端单周发版下的多分支自动化管理与实践 635 美团外卖前端容器化演进实践 643 Bifrost 微前端框架及其在美团闪购中的实践 664 Litho 的使用及原理剖析 680 Android 兼容 Java 双端复用场景下,如何更好的做测试和监控?双端同学存在各自技术认知的边 界,如何在出现问题时快速排查、及时止损? ● 跨端复用流程规范问题:新的技术革命,必然打破旧的秩序,在当前跨端复用 场景下,各种包括工程管理、代码规范、分支管理、需求同步的问题也会孕育 而生,同需解决。 3.2 跨端复用应用架构 为了解决跨端复用在业务实践中遇到的各种问题,我们重新设计了跨端复用应用架 构,从架构分层管理、复用方式设计、流程规范、质量保障方面入手,重点解决跨端 随着大前端融合推进,RN- 小程序代码复用率将逐步提升,客户端(iOS、Android) 与 小程序代码将倾向由一名同学完成多端开发。 6. RN 适配代码合入迭代分支 需求在小程序测试完毕后,将 RN 组件适配 Feature 分支代码合入 Release 迭代分 支,并在客户端(iOS、Android)打包上线。 3.5 跨端复用质量保障 跨端复用场景下存在包括复用组件接口兼容性问题、组件间的依赖隐患问题、测试和0 码力 | 738 页 | 50.29 MB | 1 年前3
Hello 算法 1.1.0 Dart版res = fib(n - 1) + fib(n - 2); // 返回结果 f(n) return res; } 观察以上代码,我们在函数内递归调用了两个函数,这意味着从一个调用产生了两个调用分支。如图 2‑6 所 示,这样不断递归调用下去,最终将产生一棵层数为 ? 的递归树(recursion tree)。 图 2‑6 斐波那契数列的递归树 从本质上看,递归体现了“将问题分解为更小子 com 212 循环完成后,? 指向最左边的 target ,? 指向首个小于 target 的元素,因此索引 ? 就是插入点。 图 10‑6 二分查找重复元素的插入点的步骤 观察以下代码,判断分支 nums[m] > target 和 nums[m] == target 的操作相同,因此两者可以合并。 即便如此,我们仍然可以将判断条件保持展开,因为其逻辑更加清晰、可读性更好。 第 10 章 时,跳过所有已被选择的节点,即剪枝。 如图 13‑6 所示,假设我们第一轮选择 1 ,第二轮选择 3 ,第三轮选择 2 ,则需要在第二轮剪掉元素 1 的分 支,在第三轮剪掉元素 1 和元素 3 的分支。 图 13‑6 全排列剪枝示例 第 13 章 回溯 hello‑algo.com 283 观察图 13‑6 发现,该剪枝操作将搜索空间大小从 ?(??) 减小至 ?(?!) 。 2. 代码实现0 码力 | 378 页 | 18.45 MB | 1 年前3
Hello 算法 1.1.0 JavaScript版res = fib(n - 1) + fib(n - 2); // 返回结果 f(n) return res; } 观察以上代码,我们在函数内递归调用了两个函数,这意味着从一个调用产生了两个调用分支。如图 2‑6 所 示,这样不断递归调用下去,最终将产生一棵层数为 ? 的递归树(recursion tree)。 图 2‑6 斐波那契数列的递归树 从本质上看,递归体现了“将问题分解为更小子 com 212 循环完成后,? 指向最左边的 target ,? 指向首个小于 target 的元素,因此索引 ? 就是插入点。 图 10‑6 二分查找重复元素的插入点的步骤 观察以下代码,判断分支 nums[m] > target 和 nums[m] == target 的操作相同,因此两者可以合并。 即便如此,我们仍然可以将判断条件保持展开,因为其逻辑更加清晰、可读性更好。 第 10 章 时,跳过所有已被选择的节点,即剪枝。 如图 13‑6 所示,假设我们第一轮选择 1 ,第二轮选择 3 ,第三轮选择 2 ,则需要在第二轮剪掉元素 1 的分 支,在第三轮剪掉元素 1 和元素 3 的分支。 图 13‑6 全排列剪枝示例 观察图 13‑6 发现,该剪枝操作将搜索空间大小从 ?(??) 减小至 ?(?!) 。 第 13 章 回溯 hello‑algo.com 284 2. 代码实现0 码力 | 379 页 | 18.46 MB | 1 年前3
Hello 算法 1.1.0 TypeScript版res = fib(n - 1) + fib(n - 2); // 返回结果 f(n) return res; } 观察以上代码,我们在函数内递归调用了两个函数,这意味着从一个调用产生了两个调用分支。如图 2‑6 所 示,这样不断递归调用下去,最终将产生一棵层数为 ? 的递归树(recursion tree)。 图 2‑6 斐波那契数列的递归树 从本质上看,递归体现了“将问题分解为更小子 ,? 指向首个小于 target 的元素,因此索引 ? 就是插入点。 第 10 章 搜索 hello‑algo.com 214 图 10‑6 二分查找重复元素的插入点的步骤 观察以下代码,判断分支 nums[m] > target 和 nums[m] == target 的操作相同,因此两者可以合并。 即便如此,我们仍然可以将判断条件保持展开,因为其逻辑更加清晰、可读性更好。 // === 时,跳过所有已被选择的节点,即剪枝。 如图 13‑6 所示,假设我们第一轮选择 1 ,第二轮选择 3 ,第三轮选择 2 ,则需要在第二轮剪掉元素 1 的分 支,在第三轮剪掉元素 1 和元素 3 的分支。 图 13‑6 全排列剪枝示例 第 13 章 回溯 hello‑algo.com 286 观察图 13‑6 发现,该剪枝操作将搜索空间大小从 ?(??) 减小至 ?(?!) 。 2. 代码实现0 码力 | 383 页 | 18.49 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Dart 版res = fib(n - 1) + fib(n - 2); // 返回结果 f(n) return res; } 观察以上代码,我们在函数内递归调用了两个函数,这意味着从一个调用产生了两个调用分支。如图 2‑6 所 示,这样不断递归调用下去,最终将产生一棵层数为 ? 的递归树(recursion tree)。 图 2‑6 斐波那契数列的递归树 从本质上看,递归体现了“将问题分解为更小子 com 212 循环完成后,? 指向最左边的 target ,? 指向首个小于 target 的元素,因此索引 ? 就是插入点。 图 10‑6 二分查找重复元素的插入点的步骤 观察以下代码,判断分支 nums[m] > target 和 nums[m] == target 的操作相同,因此两者可以合并。 即便如此,我们仍然可以将判断条件保持展开,因为其逻辑更加清晰、可读性更好。 第 10 章 时,跳过所有已被选择的节点,即剪枝。 如图 13‑6 所示,假设我们第一轮选择 1 ,第二轮选择 3 ,第三轮选择 2 ,则需要在第二轮剪掉元素 1 的分 支,在第三轮剪掉元素 1 和元素 3 的分支。 图 13‑6 全排列剪枝示例 第 13 章 回溯 www.hello‑algo.com 283 观察图 13‑6 发现,该剪枝操作将搜索空间大小从 ?(??) 减小至 ?(?!) 。 20 码力 | 378 页 | 18.46 MB | 10 月前3
Hello 算法 1.2.0 简体中文 JavaScript 版res = fib(n - 1) + fib(n - 2); // 返回结果 f(n) return res; } 观察以上代码,我们在函数内递归调用了两个函数,这意味着从一个调用产生了两个调用分支。如图 2‑6 所 示,这样不断递归调用下去,最终将产生一棵层数为 ? 的递归树(recursion tree)。 图 2‑6 斐波那契数列的递归树 从本质上看,递归体现了“将问题分解为更小子 com 212 循环完成后,? 指向最左边的 target ,? 指向首个小于 target 的元素,因此索引 ? 就是插入点。 图 10‑6 二分查找重复元素的插入点的步骤 观察以下代码,判断分支 nums[m] > target 和 nums[m] == target 的操作相同,因此两者可以合并。 即便如此,我们仍然可以将判断条件保持展开,因为其逻辑更加清晰、可读性更好。 第 10 章 时,跳过所有已被选择的节点,即剪枝。 如图 13‑6 所示,假设我们第一轮选择 1 ,第二轮选择 3 ,第三轮选择 2 ,则需要在第二轮剪掉元素 1 的分 支,在第三轮剪掉元素 1 和元素 3 的分支。 图 13‑6 全排列剪枝示例 观察图 13‑6 发现,该剪枝操作将搜索空间大小从 ?(??) 减小至 ?(?!) 。 第 13 章 回溯 www.hello‑algo.com 284 20 码力 | 379 页 | 18.47 MB | 10 月前3
Hello 算法 1.0.0b5 JavaScript版第 2 章 复杂度分析 hello‑algo.com 25 // 返回结果 f(n) return res; } 观察以上代码,我们在函数内递归调用了两个函数,这意味着从一个调用产生了两个调用分支。如图 2‑6 所 示,这样不断递归调用下去,最终将产生一个层数为 ? 的「递归树 recursion tree」。 图 2‑6 斐波那契数列的递归树 本质上看,递归体现“将问题分解为更小子问 ,? 指向首个小于 target 的元素,因此索引 ? 就是插入点。 第 10 章 搜索 hello‑algo.com 210 图 10‑6 二分查找重复元素的插入点的步骤 观察以下代码,判断分支 nums[m] > target 和 nums[m] == target 的操作相同,因此两者可以合并。 即便如此,我们仍然可以将判断条件保持展开,因为其逻辑更加清晰、可读性更好。 // === preOrder(root.right, path, res); // 回退 path.pop(); } 剪枝是一个非常形象的名词。如图 13‑3 所示,在搜索过程中,我们“剪掉”了不满足约束条件的搜索分支, 避免许多无意义的尝试,从而提高了搜索效率。 图 13‑3 根据约束条件剪枝 13.1.3 框架代码 接下来,我们尝试将回溯的“尝试、回退、剪枝”的主体框架提炼出来,提升代码的通用性。 在以下框架代码中,state0 码力 | 375 页 | 30.68 MB | 1 年前3
Hello 算法 1.0.0 JavaScript版res = fib(n - 1) + fib(n - 2); // 返回结果 f(n) return res; } 观察以上代码,我们在函数内递归调用了两个函数,这意味着从一个调用产生了两个调用分支。如图 2‑6 所 示,这样不断递归调用下去,最终将产生一棵层数为 ? 的「递归树 recursion tree」。 图 2‑6 斐波那契数列的递归树 从本质上看,递归体现了“将问题分解为更小 ,? 指向首个小于 target 的元素,因此索引 ? 就是插入点。 第 10 章 搜索 hello‑algo.com 213 图 10‑6 二分查找重复元素的插入点的步骤 观察以下代码,判断分支 nums[m] > target 和 nums[m] == target 的操作相同,因此两者可以合并。 即便如此,我们仍然可以将判断条件保持展开,因为其逻辑更加清晰、可读性更好。 // === 时,跳过所有已被选择的节点,即剪枝。 如图 13‑6 所示,假设我们第一轮选择 1 ,第二轮选择 3 ,第三轮选择 2 ,则需要在第二轮剪掉元素 1 的分 支,在第三轮剪掉元素 1 和元素 3 的分支。 图 13‑6 全排列剪枝示例 观察图 13‑6 发现,该剪枝操作将搜索空间大小从 ?(??) 减小至 ?(?!) 。 第 13 章 回溯 hello‑algo.com 284 2. 代码实现0 码力 | 376 页 | 17.57 MB | 1 年前3
共 24 条
- 1
- 2
- 3













