Hello 算法 1.1.0 Python版为了获得最佳的阅读体验,建议你通读本节内容。 0.2.1 行文风格约定 ‧ 标题后标注 * 的是选读章节,内容相对困难。如果你的时间有限,可以先跳过。 ‧ 专业术语会使用黑体(纸质版和 PDF 版)或添加下划线(网页版),例如数组(array)。建议记住它们, 以便阅读文献。 ‧ 重点内容和总结性语句会 加粗,这类文字值得特别关注。 ‧ 有特指含义的词句会使用“引号”标注,以避免歧义。 ‧ 章 初识算法 hello‑algo.com 14 ‧ 数据操作尽可能快速,涵盖数据访问、添加、删除、更新等。 ‧ 提供简洁的数据表示和逻辑信息,以便算法高效运行。 数据结构设计是一个充满权衡的过程。如果想在某方面取得提升,往往需要在另一方面作出妥协。下面举两 个例子。 ‧ 链表相较于数组,在数据添加和删除操作上更加便捷,但牺牲了数据访问速度。 ‧ 图相较于链表,提供了更丰富的逻辑信息,但需要占用更大的内存空间。 复杂度分析 hello‑algo.com 22 图 2‑2 嵌套循环的流程框图 在这种情况下,函数的操作数量与 ?2 成正比,或者说算法运行时间和输入数据大小 ? 成“平方关系”。 我们可以继续添加嵌套循环,每一次嵌套都是一次“升维”,将会使时间复杂度提高至“立方关系”“四次方 关系”,以此类推。 2.2.2 递归 递归(recursion)是一种算法策略,通过函数调用自身来解决问题。它主要包含两个阶段。0 码力 | 364 页 | 18.42 MB | 1 年前3
Hello 算法 1.0.0 Python版章 初识算法 hello‑algo.com 14 ‧ 数据操作尽可能快速,涵盖数据访问、添加、删除、更新等。 ‧ 提供简洁的数据表示和逻辑信息,以便算法高效运行。 数据结构设计是一个充满权衡的过程。如果想在某方面取得提升,往往需要在另一方面作出妥协。下面举两 个例子。 ‧ 链表相较于数组,在数据添加和删除操作上更加便捷,但牺牲了数据访问速度。 ‧ 图相较于链表,提供了更丰富的逻辑信息,但需要占用更大的内存空间。 复杂度分析 hello‑algo.com 22 图 2‑2 嵌套循环的流程框图 在这种情况下,函数的操作数量与 ?2 成正比,或者说算法运行时间和输入数据大小 ? 成“平方关系”。 我们可以继续添加嵌套循环,每一次嵌套都是一次“升维”,将会使时间复杂度提高至“立方关系”“四次方 关系”,以此类推。 2.2.2 递归 「递归 recursion」是一种算法策略,通过函数调用自身来解决问题。它主要包含两个阶段。 Q:基于数组实现的数据结构也称“静态数据结构”是否有歧义?栈也可以进行出栈和入栈等操作,这些操 作都是“动态”的。 栈确实可以实现动态的数据操作,但数据结构仍然是“静态”(长度不可变)的。尽管基于数组的数据结构可 以动态地添加或删除元素,但它们的容量是固定的。如果数据量超出了预分配的大小,就需要创建一个新的 第 3 章 数据结构 hello‑algo.com 63 更大的数组,并将旧数组的内容复制到新数组中。 Q:0 码力 | 362 页 | 17.54 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Python 版为了获得最佳的阅读体验,建议你通读本节内容。 0.2.1 行文风格约定 ‧ 标题后标注 * 的是选读章节,内容相对困难。如果你的时间有限,可以先跳过。 ‧ 专业术语会使用黑体(纸质版和 PDF 版)或添加下划线(网页版),例如数组(array)。建议记住它们, 以便阅读文献。 ‧ 重点内容和总结性语句会 加粗,这类文字值得特别关注。 ‧ 有特指含义的词句会使用“引号”标注,以避免歧义。 ‧ com 14 ‧ 空间占用尽量少,以节省计算机内存。 ‧ 数据操作尽可能快速,涵盖数据访问、添加、删除、更新等。 ‧ 提供简洁的数据表示和逻辑信息,以便算法高效运行。 数据结构设计是一个充满权衡的过程。如果想在某方面取得提升,往往需要在另一方面作出妥协。下面举两 个例子。 ‧ 链表相较于数组,在数据添加和删除操作上更加便捷,但牺牲了数据访问速度。 ‧ 图相较于链表,提供了更丰富的逻辑信息,但需要占用更大的内存空间。 复杂度分析 www.hello‑algo.com 22 图 2‑2 嵌套循环的流程框图 在这种情况下,函数的操作数量与 ?2 成正比,或者说算法运行时间和输入数据大小 ? 成“平方关系”。 我们可以继续添加嵌套循环,每一次嵌套都是一次“升维”,将会使时间复杂度提高至“立方关系”“四次方 关系”,以此类推。 2.2.2 递归 递归(recursion)是一种算法策略,通过函数调用自身来解决问题。它主要包含两个阶段。0 码力 | 364 页 | 18.43 MB | 10 月前3
Hello 算法 1.0.0b1 Python版空间占用尽可能小,节省计算机内存。 ‧ 数据操作尽量快,包括数据访问、添加、删除、更新等。 1. 引言 hello‑algo.com 10 ‧ 提供简洁的数据表示和逻辑信息,以便算法高效运行。 数据结构的设计是一个充满权衡的过程,这意味着如果获得某方面的优势,则往往需要在另一方面做出妥协。 例如,链表相对于数组,数据添加删除操作更加方便,但牺牲了数据的访问速度;图相对于链表,提供了更多 的逻辑信息,但需要占用更多的内存空间。 为数组元素、value 为元素索引。循环遍历数组中的每个元素 num ,并执行: 1. 判断数字 target - num 是否在哈希表中,若是则直接返回该两个元素的索引; 2. 将元素 num 和其索引添加进哈希表; # === File: leetcode_two_sum.py === def two_sum_hash_table(nums: List[int], target: int) -> """ Python 的 list 可以自由存储各种基本数据类型和对象 """ list = [0, 0.0, 'a', False] 3.1.2. 计算机内存 在计算机中,内存和硬盘是两种主要的存储硬件设备。「硬盘」主要用于长期存储数据,容量较大(通常可达 到 TB 级别)、速度较慢。「内存」用于运行程序时暂存数据,速度较快,但容量较小(通常为 GB 级别)。 算法运行中,相关数据都被存储0 码力 | 178 页 | 14.67 MB | 1 年前3
Hello 算法 1.0.0b2 Python版空间占用尽可能小,节省计算机内存。 ‧ 数据操作尽量快,包括数据访问、添加、删除、更新等。 1. 引言 hello‑algo.com 10 ‧ 提供简洁的数据表示和逻辑信息,以便算法高效运行。 数据结构的设计是一个充满权衡的过程,这意味着如果获得某方面的优势,则往往需要在另一方面做出妥协。 例如,链表相对于数组,数据添加删除操作更加方便,但牺牲了数据的访问速度;图相对于链表,提供了更多 的逻辑信息,但需要占用更多的内存空间。 为数组元素、value 为元素索引。循环遍历数组中的每个元素 num ,并执行: 1. 判断数字 target - num 是否在哈希表中,若是则直接返回该两个元素的索引; 2. 将元素 num 和其索引添加进哈希表; # === File: leetcode_two_sum.py === def two_sum_hash_table(nums: list[int], target: int) -> """ Python 的 list 可以自由存储各种基本数据类型和对象 """ list = [0, 0.0, 'a', False] 3.1.2. 计算机内存 在计算机中,内存和硬盘是两种主要的存储硬件设备。「硬盘」主要用于长期存储数据,容量较大(通常可达 到 TB 级别)、速度较慢。「内存」用于运行程序时暂存数据,速度较快,但容量较小(通常为 GB 级别)。 算法运行中,相关数据都被存储0 码力 | 186 页 | 15.69 MB | 1 年前3
Hello 算法 1.0.0b4 Python版空间占用尽量减少,节省计算机内存。 ‧ 数据操作尽可能快速,涵盖数据访问、添加、删除、更新等。 1. 初识算法 hello‑algo.com 10 ‧ 提供简洁的数据表示和逻辑信息,以便使得算法高效运行。 数据结构设计是一个充满权衡的过程,这意味着要在某方面取得优势,往往需要在另一方面作出妥协。例如, 链表相较于数组,在数据添加和删除操作上更加便捷,但牺牲了数据访问速度;图相较于链表,提供了更丰 树形结构:树、堆、哈希表,元素存在一对多的关系。 ‧ 网状结构:图,元素存在多对多的关系。 3. 数据结构 hello‑algo.com 37 3.1.2. 物理结构:连续与离散 在计算机中,内存和硬盘是两种主要的存储硬件设备。硬盘主要用于长期存储数据,容量较大(通常可达到 TB 级别)、速度较慢。内存用于运行程序时暂存数据,速度较快,但容量较小(通常为 GB 级别)。 在算法运行过程中,相关数据都存储在内存 数组长度的选 择变得困难。若长度过小,需要在持续添加数据时频繁扩容数组;若长度过大,则会造成内存空间的浪费。 为解决此问题,出现了一种被称为「动态数组 Dynamic Array」的数据结构,即长度可变的数组,也常被称 为「列表 List」。列表基于数组实现,继承了数组的优点,并且可以在程序运行过程中动态扩容。在列表中, 我们可以自由添加元素,而无需担心超过容量限制。 4.3.1. 列表常用操作0 码力 | 329 页 | 27.34 MB | 1 年前3
Hello 算法 1.0.0b5 Python版初识算法 hello‑algo.com 13 ‧ 数据操作尽可能快速,涵盖数据访问、添加、删除、更新等。 ‧ 提供简洁的数据表示和逻辑信息,以便使得算法高效运行。 数据结构设计是一个充满权衡的过程。如果想要在某方面取得提升,往往需要在另一方面作出妥协。下面举 两个例子。 ‧ 链表相较于数组,在数据添加和删除操作上更加便捷,但牺牲了数据访问速度。 ‧ 图相较于链表,提供了更丰富的逻辑信息,但需要占用更大的内存空间。 复杂度分析 hello‑algo.com 21 图 2‑2 嵌套循环的流程框图 在这种情况下,函数的操作数量与 ?2 成正比,或者说算法运行时间和输入数据大小 ? 成“平方关系”。 我们可以继续添加嵌套循环,每一次嵌套都是一次“升维”,将会使时间复杂度提高至“立方关系”、“四次方 关系”、以此类推。 2.2.2 递归 「递归 recursion」是一种算法策略,通过函数调用自身来解决问题。它主要包含两个阶段。 是一对一的顺序关系。 ‧ 树形结构:树、堆、哈希表,元素之间是一对多的关系。 ‧ 网状结构:图,元素之间是多对多的关系。 3.1.2 物理结构:连续与离散 在计算机中,内存和硬盘是两种主要的存储硬件设备。硬盘主要用于长期存储数据,容量较大(通常可达到 TB 级别)、速度较慢。内存用于运行程序时暂存数据,速度较快,但容量较小(通常为 GB 级别)。 第 3 章 数据结构 hello‑algo0 码力 | 361 页 | 30.64 MB | 1 年前3
Python3 基础教程 - 廖雪峰Path 的环境变量设定的路径去查找 python.exe,如果没找到,就会报错。如果在安装时漏掉了勾选 Add Python 3.5 to PATH,那就要手动把 python.exe 所在的路径添加到 Path 中。 如果你不知道怎么修改环境变量,建议把 Python 安装程序重新运行一 遍,务必记得勾上 Add Python 3.5 to PATH。 小结 Python3 基础教程【完整版】 编码下继续工作。 搞清楚了 ASCII、Unicode 和 UTF-8 的关系,我们就可以总结一下现在 计算机系统通用的字符编码工作方式: 在计算机内存中,统一使用 Unicode 编码,当需要保存到硬盘或者需要 传输的时候,就转换为 UTF-8 编码。 Python3 基础教程【完整版】 http://www.yeayee.com/ 46/531 用记事本编辑的时候,从文件读取的 的交互式命令行测试,方便快捷。 参考源码 the_string.py 使用 list 和 tuple list Python 内置的一种数据类型是列表:list。list 是一种有序的集合,可以 随时添加和删除其中的元素。 比如,列出班里所有同学的名字,就可以用一个 list 表示: >>> classmates = ['Michael', 'Bob', 'Tracy'] >>> classmates0 码力 | 531 页 | 5.15 MB | 1 年前3
Python 标准库参考指南 3.10.15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2 内置函数 5 3 内置常量 27 3.1 由 site 模块添加的常量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4 内置类型 29 4.1 逻辑值检测 传入三个参数时,返回一个新的 type 对象。这在本质上是 class 语句的一种动态形式,name 字符 串即类名并会成为__name__ 属性;bases 元组包含基类并会成为__bases__ 属性;如果为空则会 添加所有类的终极基类object。dict 字典包含类主体的属性和方法定义;它在成为__dict__ 属 性之前可能会被拷贝或包装。下面两条语句会创建相同的type 对象: >>> class X: debug__ 无法重新赋值(赋值给它们,即使是属性名,将引 发SyntaxError ),所以它们可以被认为是“真正的”常数。 3.1 由 site 模块添加的常量 site 模块(在启动期间自动导入,除非给出 -S 命令行选项)将几个常量添加到内置命名空间。它们对 交互式解释器 shell 很有用,并且不应在程序中使用。 quit(code=None) exit(code=None) 当打0 码力 | 2072 页 | 10.39 MB | 9 月前3
Python 标准库参考指南 3.10.15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 内置函数 5 3 内置常量 29 3.1 由 site 模块添加的常量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 4 内置类型 31 4.1 传入三个参数时,返回一个新的 type 对象。这在本质上是 class 语句的一种动态形式,name 字符串 即类名并会成为__name__ 属性;bases 元组包含基类并会成为__bases__ 属性;如果为空则会添加 所有类的终极基类object。dict 字典包含类主体的属性和方法定义;它在成为__dict__ 属性之前可 能会被拷贝或包装。下面两条语句会创建相同的type 对象: >>> class X: debug__ 无法重新赋值(赋值给它们,即使是属性名,将引 发SyntaxError ),所以它们可以被认为是“真正的”常数。 3.1 由 site 模块添加的常量 site 模块(在启动期间自动导入,除非给出 -S 命令行选项)将几个常量添加到内置命名空间。它们对交互 式解释器 shell 很有用,并且不应在程序中使用。 quit(code=None) exit(code=None) 当打0 码力 | 2207 页 | 10.45 MB | 9 月前3
共 157 条
- 1
- 2
- 3
- 4
- 5
- 6
- 16













