Hello 算法 1.2.0 繁体中文 Dart 版
若你是演算法初學者,從未接觸過演算法,或者已經有一些刷題經驗,對資料結構與演算法有模糊的認識, 在會與不會之間反覆橫跳,那麼本書正是為你量身定製的! 如果你已經積累一定的刷題量,熟悉大部分題型,那麼本書可助你回顧與梳理演算法知識體系,倉庫源程式 碼可以當作“刷題工具庫”或“演算法字典”來使用。 若你是演算法“大神”,我們期待收到你的寶貴建議,或者一起參與創作。 前置條件 你需要至少具備任一語言的程式設計基礎,能夠閱讀和編寫簡單程式碼。 感謝我的女朋友泡泡作為本書的首位讀者,從演算法小白的角度提出許多寶貴建議,使得本書更適合 新手閱讀; ‧ 感謝騰寶、琦寶、飛寶為本書起了一個富有創意的名字,喚起大家寫下第一行程式碼“Hello World!” 的美好回憶; ‧ 感謝校銓在智慧財產權方面提供的專業幫助,這對本開源書的完善起到了重要作用; ‧ 感謝蘇潼為本書設計了精美的封面和 logo ,並在我的強迫症的驅使下多次耐心修改; ‧ 感謝 @squidfunk 和階段三的學習。 第 0 章 前言 www.hello‑algo.com 9 圖 0‑8 演算法學習路線 0.3 小結 ‧ 本書的主要受眾是演算法初學者。如果你已有一定基礎,本書能幫助你系統回顧演算法知識,書中源程 式碼也可作為“刷題工具庫”使用。 ‧ 書中內容主要包括複雜度分析、資料結構和演算法三部分,涵蓋了該領域的大部分主題。 ‧ 對於演算法新手,在初學階段閱讀一本入門書至關重要,可以少走許多彎路。0 码力 | 378 页 | 18.77 MB | 9 月前3Hello 算法 1.1.0 Dart版
降低算法的时间复杂度。我们借助一个算法题来加深 理解。 Question 给定一个整数数组 nums 和一个目标元素 target ,请在数组中搜索“和”为 target 的两个元素,并返 回它们的数组索引。返回任意一个解即可。 10.4.1 线性查找:以时间换空间 考虑直接遍历所有可能的组合。如图 10‑9 所示,我们开启一个两层循环,在每轮中判断两个整数的和是否为 target ,若是,则返回它们的索引。 mid) { tmp[k++] = nums[i++]; } while (j <= right) { tmp[k++] = nums[j++]; } // 将临时数组 tmp 中的元素复制回原数组 nums 的对应区间 for (k = 0; k < tmp.length; k++) { nums[left + k] = tmp[k]; } } /* 归并排序 */ void0 码力 | 378 页 | 18.45 MB | 1 年前3Hello 算法 1.2.0 简体中文 Dart 版
降低算法的时间复杂度。我们借助一个算法题来加深 理解。 Question 给定一个整数数组 nums 和一个目标元素 target ,请在数组中搜索“和”为 target 的两个元素,并返 回它们的数组索引。返回任意一个解即可。 10.4.1 线性查找:以时间换空间 考虑直接遍历所有可能的组合。如图 10‑9 所示,我们开启一个两层循环,在每轮中判断两个整数的和是否为 target ,若是,则返回它们的索引。 mid) { tmp[k++] = nums[i++]; } while (j <= right) { tmp[k++] = nums[j++]; } // 将临时数组 tmp 中的元素复制回原数组 nums 的对应区间 for (k = 0; k < tmp.length; k++) { nums[left + k] = tmp[k]; } } /* 归并排序 */ void0 码力 | 378 页 | 18.46 MB | 9 月前3Hello 算法 1.0.0b5 Dart版
1000 0011 → −3 为了解决此问题,计算机引入了「反码 1’s complement code」。如果我们先将原码转换为反码,并在反码 下计算 1 + (−2) ,最后将结果从反码转化回原码,则可得到正确结果 −1 。 第 3 章 数据结构 hello‑algo.com 54 1 + (−2) → 0000 0001 (原码) + 1000 0010 (原码) = 0000 0001 ? 的有序数组 nums 和一个元素 target ,数组不存在重复元素。现将 target 插入到数组 nums 中,并保持其有序性。若数组中已存在元素 target ,则插入到其左方。请返 回插入后 target 在数组中的索引。 图 10‑4 二分查找插入点示例数据 如果想要复用上节的二分查找代码,则需要回答以下两个问题。 问题一:当数组中包含 target 时,插入点的索引是否是该元素的索引?0 码力 | 376 页 | 30.67 MB | 1 年前3Hello 算法 1.0.0 Dart版
mid) { tmp[k++] = nums[i++]; } while (j <= right) { tmp[k++] = nums[j++]; } // 将临时数组 tmp 中的元素复制回原数组 nums 的对应区间 for (k = 0; k < tmp.length; k++) { nums[left + k] = tmp[k]; } 第 11 章 排序 hello‑algo0 码力 | 377 页 | 17.56 MB | 1 年前3
共 5 条
- 1