 Hello 算法 1.0.0b1 Golang版写在前面 hello‑algo.com 4 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注释、内容 注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.3. 在动画图解中高效学习 视频和图片相比于文字的信息密度和结构化程度更高,更容易理解。在本书中,知识重难点会主要以动画、图 生物学科中的“细胞分裂”即是指数阶增长:初始状态为 1 个细胞,分裂一轮后为 2 个,分裂 两轮后为 4 个,⋯⋯,分裂 ? 轮后有 2? 个细胞。 指数阶增长得非常快,在实际应用中一般是不能被接受的。若一个问题使用「暴力枚举」求解的时间复杂度是 ?(2?) ,那么一般都需要使用「动态规划」或「贪心算法」等算法来求解。 // === File: time_complexity.go === /* 指数阶(循环实现)*/ 你可以按任意顺序返回答案。 「暴力枚举」和「辅助哈希表」分别对应 空间最优 和 时间最优 的两种解法。本着时间比空间更宝贵的原则,后 者是本题的最佳解法。 方法一:暴力枚举 考虑直接遍历所有所有可能性。通过开启一个两层循环,判断两个整数的和是否为 target ,若是则返回它俩 的索引(即下标)即可。 // === File: leetcode_two_sum.go === /* 方法一:暴力枚举 */ func0 码力 | 190 页 | 14.71 MB | 1 年前3 Hello 算法 1.0.0b1 Golang版写在前面 hello‑algo.com 4 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注释、内容 注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.3. 在动画图解中高效学习 视频和图片相比于文字的信息密度和结构化程度更高,更容易理解。在本书中,知识重难点会主要以动画、图 生物学科中的“细胞分裂”即是指数阶增长:初始状态为 1 个细胞,分裂一轮后为 2 个,分裂 两轮后为 4 个,⋯⋯,分裂 ? 轮后有 2? 个细胞。 指数阶增长得非常快,在实际应用中一般是不能被接受的。若一个问题使用「暴力枚举」求解的时间复杂度是 ?(2?) ,那么一般都需要使用「动态规划」或「贪心算法」等算法来求解。 // === File: time_complexity.go === /* 指数阶(循环实现)*/ 你可以按任意顺序返回答案。 「暴力枚举」和「辅助哈希表」分别对应 空间最优 和 时间最优 的两种解法。本着时间比空间更宝贵的原则,后 者是本题的最佳解法。 方法一:暴力枚举 考虑直接遍历所有所有可能性。通过开启一个两层循环,判断两个整数的和是否为 target ,若是则返回它俩 的索引(即下标)即可。 // === File: leetcode_two_sum.go === /* 方法一:暴力枚举 */ func0 码力 | 190 页 | 14.71 MB | 1 年前3
 Hello 算法 1.0.0b2 Golang版写在前面 hello‑algo.com 4 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注释、内容 注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.3. 在动画图解中高效学习 视频和图片相比于文字的信息密度和结构化程度更高,更容易理解。在本书中,知识重难点会主要以动画、图 生物学科中的“细胞分裂”即是指数阶增长:初始状态为 1 个细胞,分裂一轮后为 2 个,分裂 两轮后为 4 个,⋯⋯,分裂 ? 轮后有 2? 个细胞。 指数阶增长得非常快,在实际应用中一般是不能被接受的。若一个问题使用「暴力枚举」求解的时间复杂度是 ?(2?) ,那么一般都需要使用「动态规划」或「贪心算法」等算法来求解。 // === File: time_complexity.go === /* 指数阶(循环实现)*/ 你可以按任意顺序返回答案。 「暴力枚举」和「辅助哈希表」分别对应 空间最优 和 时间最优 的两种解法。本着时间比空间更宝贵的原则,后 者是本题的最佳解法。 方法一:暴力枚举 考虑直接遍历所有所有可能性。通过开启一个两层循环,判断两个整数的和是否为 target ,若是则返回它俩 的索引(即下标)即可。 // === File: leetcode_two_sum.go === /* 方法一:暴力枚举 */ func0 码力 | 202 页 | 15.73 MB | 1 年前3 Hello 算法 1.0.0b2 Golang版写在前面 hello‑algo.com 4 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注释、内容 注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.3. 在动画图解中高效学习 视频和图片相比于文字的信息密度和结构化程度更高,更容易理解。在本书中,知识重难点会主要以动画、图 生物学科中的“细胞分裂”即是指数阶增长:初始状态为 1 个细胞,分裂一轮后为 2 个,分裂 两轮后为 4 个,⋯⋯,分裂 ? 轮后有 2? 个细胞。 指数阶增长得非常快,在实际应用中一般是不能被接受的。若一个问题使用「暴力枚举」求解的时间复杂度是 ?(2?) ,那么一般都需要使用「动态规划」或「贪心算法」等算法来求解。 // === File: time_complexity.go === /* 指数阶(循环实现)*/ 你可以按任意顺序返回答案。 「暴力枚举」和「辅助哈希表」分别对应 空间最优 和 时间最优 的两种解法。本着时间比空间更宝贵的原则,后 者是本题的最佳解法。 方法一:暴力枚举 考虑直接遍历所有所有可能性。通过开启一个两层循环,判断两个整数的和是否为 target ,若是则返回它俩 的索引(即下标)即可。 // === File: leetcode_two_sum.go === /* 方法一:暴力枚举 */ func0 码力 | 202 页 | 15.73 MB | 1 年前3
 Go 入门指南(The way to Go)状态投入到这个项目的编译器和运行实现 上。Ian Lance Taylor 也加入到了开发团队中,并于 2008 年 5 月创建了一个 gcc 前端。 Russ Cox 加入开发团队后着手语言和类库方面的开发,也就是 Go 语言的标准包。在 2009 年 10 月 30 日, Rob Pike 以 Google Techtalk 的形式第一次向人们宣告了 Go 语言的存在。 直到 2009 Erlang 类似的机制。 这是一门完全开源的编程语言,因为它使用 BSD 授权许可,所以任何人都可以进行商业软件的开发而不需要支付任 何费用。 尽管为了能够让目前主流的开发者们能够对 Go 语言中的类 C 语言的语法感到非常亲切而易于转型,但是它在极大 程度上简化了这些语法,使得它们比 C/C++ 的语法更加简洁和干净。同时,Go 语言也拥有一些动态语言的特性, 这使得使用 Python 和 Ruby 语言的语法标准,你也可以在 src/cmd/internal/gc/go.y 中查看到,这种语法标准在编译时不需要符 号表来协助解析。 Go 语言从本质上(程序和结构方面)来实现并发编程。 因为 Go 语言没有类和继承的概念,所以它和 Java 或 C++ 看起来并不相同。但是它通过接口(interface)的 概念来实现多态性。Go 语言有一个清晰易懂的轻量级类型系统,在类型之间也没有层级之说。因此可以说这是一门混0 码力 | 466 页 | 4.44 MB | 1 年前3 Go 入门指南(The way to Go)状态投入到这个项目的编译器和运行实现 上。Ian Lance Taylor 也加入到了开发团队中,并于 2008 年 5 月创建了一个 gcc 前端。 Russ Cox 加入开发团队后着手语言和类库方面的开发,也就是 Go 语言的标准包。在 2009 年 10 月 30 日, Rob Pike 以 Google Techtalk 的形式第一次向人们宣告了 Go 语言的存在。 直到 2009 Erlang 类似的机制。 这是一门完全开源的编程语言,因为它使用 BSD 授权许可,所以任何人都可以进行商业软件的开发而不需要支付任 何费用。 尽管为了能够让目前主流的开发者们能够对 Go 语言中的类 C 语言的语法感到非常亲切而易于转型,但是它在极大 程度上简化了这些语法,使得它们比 C/C++ 的语法更加简洁和干净。同时,Go 语言也拥有一些动态语言的特性, 这使得使用 Python 和 Ruby 语言的语法标准,你也可以在 src/cmd/internal/gc/go.y 中查看到,这种语法标准在编译时不需要符 号表来协助解析。 Go 语言从本质上(程序和结构方面)来实现并发编程。 因为 Go 语言没有类和继承的概念,所以它和 Java 或 C++ 看起来并不相同。但是它通过接口(interface)的 概念来实现多态性。Go 语言有一个清晰易懂的轻量级类型系统,在类型之间也没有层级之说。因此可以说这是一门混0 码力 | 466 页 | 4.44 MB | 1 年前3
 Go 入门指南(The way to Go)状态投入到这个项目的编译器 和运行实现上。Ian Lance Taylor 也加入到了开发团队中,并于 2008 年 5 月创建了一个 gcc 前端。 Russ Cox 加入开发团队后着手语言和类库方面的开发,也就是 Go 语言的标准包。在 2009 年 10 月 30 日,Rob Pike 以 Google Techtalk 的形式第一次向人们宣告了 Go 语言的存在。 直到 2009 年 Erlang 类似的机制。 这是一门完全开源的编程语言,因为它使用 BSD 授权许可,所以任何人都可以进行商业软件的开发而不需 要支付任何费用。 尽管为了能够让目前主流的开发者们能够对 Go 语言中的类 C 语言的语法感到非常亲切而易于转型,但是 它在极大程度上简化了这些语法,使得它们比 C/C++ 的语法更加简洁和干净。同时,Go 语言也拥有一些 动态语言的特性,这使得使用 Python 和 Ruby 中查看到,这种语法标准在编译 时不需要符号表来协助解析。 1.2.5 语言的特性 Go 语言从本质上(程序和结构方面)来实现并发编程。 Go入门指南 - 9 - 本文档使用 看云 构建 因为 Go 语言没有类和继承的概念,所以它和 Java 或 C++ 看起来并不相同。但是它通过接口 (interface)的概念来实现多态性。Go 语言有一个清晰易懂的轻量级类型系统,在类型之间也没有层级 之说。因此可以说这是一门混合型的语言。0 码力 | 380 页 | 2.97 MB | 1 年前3 Go 入门指南(The way to Go)状态投入到这个项目的编译器 和运行实现上。Ian Lance Taylor 也加入到了开发团队中,并于 2008 年 5 月创建了一个 gcc 前端。 Russ Cox 加入开发团队后着手语言和类库方面的开发,也就是 Go 语言的标准包。在 2009 年 10 月 30 日,Rob Pike 以 Google Techtalk 的形式第一次向人们宣告了 Go 语言的存在。 直到 2009 年 Erlang 类似的机制。 这是一门完全开源的编程语言,因为它使用 BSD 授权许可,所以任何人都可以进行商业软件的开发而不需 要支付任何费用。 尽管为了能够让目前主流的开发者们能够对 Go 语言中的类 C 语言的语法感到非常亲切而易于转型,但是 它在极大程度上简化了这些语法,使得它们比 C/C++ 的语法更加简洁和干净。同时,Go 语言也拥有一些 动态语言的特性,这使得使用 Python 和 Ruby 中查看到,这种语法标准在编译 时不需要符号表来协助解析。 1.2.5 语言的特性 Go 语言从本质上(程序和结构方面)来实现并发编程。 Go入门指南 - 9 - 本文档使用 看云 构建 因为 Go 语言没有类和继承的概念,所以它和 Java 或 C++ 看起来并不相同。但是它通过接口 (interface)的概念来实现多态性。Go 语言有一个清晰易懂的轻量级类型系统,在类型之间也没有层级 之说。因此可以说这是一门混合型的语言。0 码力 | 380 页 | 2.97 MB | 1 年前3
 Go基础语法宝典关键字 go的二十五个关键字 简介 数据类型的定义 定义变量 常量 内置基础类型 Boolean 数值类型 字符串 错误类型 分组声明 iota枚举 Go程序设计的一些规则 array 、 slice 、 map array slice slice 有一些简便的操作 slice 有几个有用的内置函数 map make 、 new 操作 零值 流程控制 if prefix = "Go_" var i int var pi float32 var prefix string import( "fmt" "os" ) iota枚举 Go里面有一个关键字 iota ,这个关键字用来声明 enum 的时候采用,它默认开始值是0,const中每增 加一行加1: 除非被显式设置为其它值或 iota ,每个 const 分组 slice 一样,通过 key 来操作,只是 slice 的 index 只能是 `int`类型,而 map 多了很多类型,可以是 int ,可以是 string 及所有完全定义了 == 与 != 操作的类 型。 这个 map 就像平常看到的表格一样,左边列是 key ,右边列是值 使用 map 过程中需要注意的几点: map 是无序的,每次打印出来的 map 都会不一样,它不能通过 index0 码力 | 47 页 | 1020.34 KB | 1 年前3 Go基础语法宝典关键字 go的二十五个关键字 简介 数据类型的定义 定义变量 常量 内置基础类型 Boolean 数值类型 字符串 错误类型 分组声明 iota枚举 Go程序设计的一些规则 array 、 slice 、 map array slice slice 有一些简便的操作 slice 有几个有用的内置函数 map make 、 new 操作 零值 流程控制 if prefix = "Go_" var i int var pi float32 var prefix string import( "fmt" "os" ) iota枚举 Go里面有一个关键字 iota ,这个关键字用来声明 enum 的时候采用,它默认开始值是0,const中每增 加一行加1: 除非被显式设置为其它值或 iota ,每个 const 分组 slice 一样,通过 key 来操作,只是 slice 的 index 只能是 `int`类型,而 map 多了很多类型,可以是 int ,可以是 string 及所有完全定义了 == 与 != 操作的类 型。 这个 map 就像平常看到的表格一样,左边列是 key ,右边列是值 使用 map 过程中需要注意的几点: map 是无序的,每次打印出来的 map 都会不一样,它不能通过 index0 码力 | 47 页 | 1020.34 KB | 1 年前3
 Hello 算法 1.0.0b4 Golang版为准,例如使用 None 来表示“空”。 ‧ 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.2. 在动画图解中高效学习 相较于文字,视频和图片具有更高的信息密度和结构化程度,因此更易于理解。在本书中,重点和难点知识 生物学的“细胞分裂”是指数阶增长的典型例子:初始状态为 1 个细胞,分裂一轮后变为 2 个,分裂两轮后变为 4 个,以此类推,分裂 ? 轮后有 2? 个细胞。 指数阶增长非常迅速,在实际应用中通常是不可接受的。若一个问题使用「暴力枚举」求解的时间复杂度为 ?(2?) ,那么通常需要使用「动态规划」或「贪心算法」等方法来解决。 // === File: time_complexity.go === /* 指数阶(循环实现)*/ 函数(function)可以独立被执行,所有参数都以显式传递。方法(method)与一个对象关 联,方法被隐式传递给调用它的对象,方法能够对类的实例中包含的数据进行操作。 因此,C 和 Go 只有函数,Java 和 C# 只有方法,在 C++, Python 中取决于它是否属于一个类。 2. 复杂度 hello‑algo.com 37 � 图片“空间复杂度的常见类型”反映的是否是占用空间的绝对大小?0 码力 | 347 页 | 27.40 MB | 1 年前3 Hello 算法 1.0.0b4 Golang版为准,例如使用 None 来表示“空”。 ‧ 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.2. 在动画图解中高效学习 相较于文字,视频和图片具有更高的信息密度和结构化程度,因此更易于理解。在本书中,重点和难点知识 生物学的“细胞分裂”是指数阶增长的典型例子:初始状态为 1 个细胞,分裂一轮后变为 2 个,分裂两轮后变为 4 个,以此类推,分裂 ? 轮后有 2? 个细胞。 指数阶增长非常迅速,在实际应用中通常是不可接受的。若一个问题使用「暴力枚举」求解的时间复杂度为 ?(2?) ,那么通常需要使用「动态规划」或「贪心算法」等方法来解决。 // === File: time_complexity.go === /* 指数阶(循环实现)*/ 函数(function)可以独立被执行,所有参数都以显式传递。方法(method)与一个对象关 联,方法被隐式传递给调用它的对象,方法能够对类的实例中包含的数据进行操作。 因此,C 和 Go 只有函数,Java 和 C# 只有方法,在 C++, Python 中取决于它是否属于一个类。 2. 复杂度 hello‑algo.com 37 � 图片“空间复杂度的常见类型”反映的是否是占用空间的绝对大小?0 码力 | 347 页 | 27.40 MB | 1 年前3
 Go Web编程安装 Go的三种安装方式 Go的三种安装方式 Go有多种安装方式,你可以选择自己喜欢的。这里我们介绍三种最常见的安装方式: Go源码安装:这是一种标准的软件安装方式。对于经常使用Unix类系统的用户,尤其对于开发者来说,从源 码安装是最方便而熟悉的。 Go标准包安装:Go提供了方便的安装包,支持Windows、Linux、Mac等系统。这种方式适合初学者,可根据自 己的系统位数下载好相 在Go的源代码中,有些部分是用Plan 9 C和AT&T汇编写的,因此假如你要想从源码安装,就必须安装C的编译工具。 在Mac系统中,只要你安装了Xcode,就已经包含了相应的编译工具。 在类Unix系统中,需要安装gcc等工具。例如Ubuntu系统可通过在终端中执行sudo apt-get install gcc libc6-dev来安装编译工具。 在Windows系统中,你需要安 我们接下来的Go安装需要判断操作系统的位数,所以这小节我们先确定自己的系统类型。 Windows系统用户请按Win+R运行cmd,输入systeminfo后回车,稍等片刻,会出现一些系统信息。在“系统类 型”一行中,若显示“x64-based PC”,即为64位系统;若显示“X86-based PC”,则为32位系统。 Mac系统用户建议直接使用64位的,因为Go所支持的Mac OS X版本已经不支持纯32位处理器了。0 码力 | 295 页 | 5.91 MB | 1 年前3 Go Web编程安装 Go的三种安装方式 Go的三种安装方式 Go有多种安装方式,你可以选择自己喜欢的。这里我们介绍三种最常见的安装方式: Go源码安装:这是一种标准的软件安装方式。对于经常使用Unix类系统的用户,尤其对于开发者来说,从源 码安装是最方便而熟悉的。 Go标准包安装:Go提供了方便的安装包,支持Windows、Linux、Mac等系统。这种方式适合初学者,可根据自 己的系统位数下载好相 在Go的源代码中,有些部分是用Plan 9 C和AT&T汇编写的,因此假如你要想从源码安装,就必须安装C的编译工具。 在Mac系统中,只要你安装了Xcode,就已经包含了相应的编译工具。 在类Unix系统中,需要安装gcc等工具。例如Ubuntu系统可通过在终端中执行sudo apt-get install gcc libc6-dev来安装编译工具。 在Windows系统中,你需要安 我们接下来的Go安装需要判断操作系统的位数,所以这小节我们先确定自己的系统类型。 Windows系统用户请按Win+R运行cmd,输入systeminfo后回车,稍等片刻,会出现一些系统信息。在“系统类 型”一行中,若显示“x64-based PC”,即为64位系统;若显示“X86-based PC”,则为32位系统。 Mac系统用户建议直接使用64位的,因为Go所支持的Mac OS X版本已经不支持纯32位处理器了。0 码力 | 295 页 | 5.91 MB | 1 年前3
 Hello 算法 1.0.0b5 Golang版为准,例如使用 None 来表示“空”。 ‧ 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文字,视频和图片具有更高的信息密度和结构化程度,更易于理解。在本书中,重点和难点知识将主 联,被隐式传递给调用它的对象,能够对类的实例中包含的数据进行操作。 下面以几个常见的编程语言来说明。 ‧ C 语言是过程式编程语言,没有面向对象的概念,所以只有函数。但我们可以通过创建 结构体(struct)来模拟面向对象编程,与结构体相关联的函数就相当于其他语言中的 方法。 ‧ Java 和 C# 是面向对象的编程语言,代码块(方法)通常都是作为某个类的一部分。静 态方法的行为类似于函数,因为它被绑定在类上,不能访问特定的实例变量。 []int{6, 8, 7, 10, 9} list = append(list, list1...) // 将列表 list1 拼接到 list 之后 6. 排序列表 完成列表排序后,我们便可以使用在数组类算法题中经常考察的“二分查找”和“双指针”算法。 // === File: list_test.go === /* 排序列表 */ sort.Ints(list) // 排序后,列表元素从小到大排列0 码力 | 379 页 | 30.70 MB | 1 年前3 Hello 算法 1.0.0b5 Golang版为准,例如使用 None 来表示“空”。 ‧ 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文字,视频和图片具有更高的信息密度和结构化程度,更易于理解。在本书中,重点和难点知识将主 联,被隐式传递给调用它的对象,能够对类的实例中包含的数据进行操作。 下面以几个常见的编程语言来说明。 ‧ C 语言是过程式编程语言,没有面向对象的概念,所以只有函数。但我们可以通过创建 结构体(struct)来模拟面向对象编程,与结构体相关联的函数就相当于其他语言中的 方法。 ‧ Java 和 C# 是面向对象的编程语言,代码块(方法)通常都是作为某个类的一部分。静 态方法的行为类似于函数,因为它被绑定在类上,不能访问特定的实例变量。 []int{6, 8, 7, 10, 9} list = append(list, list1...) // 将列表 list1 拼接到 list 之后 6. 排序列表 完成列表排序后,我们便可以使用在数组类算法题中经常考察的“二分查找”和“双指针”算法。 // === File: list_test.go === /* 排序列表 */ sort.Ints(list) // 排序后,列表元素从小到大排列0 码力 | 379 页 | 30.70 MB | 1 年前3
 Hello 算法 1.1.0 Go版本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 第 0 章 前言 hello‑algo.com 5 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文字,视频和图片具有更高的信息密度和结构化程度,更易于理解。在本书中,重点和难点知识将主 调用它的对象,能够对类的实例中包含的数据进行操作。 下面以几种常见的编程语言为例来说明。 ‧ C 语言是过程式编程语言,没有面向对象的概念,所以只有函数。但我们可以通过创建结构体(struct) 来模拟面向对象编程,与结构体相关联的函数就相当于其他编程语言中的方法。 ‧ Java 和 C# 是面向对象的编程语言,代码块(方法)通常作为某个类的一部分。静态方法的行为类似于 函数,因为它被绑定在类上,不能访问特定的实例变量。 65 更大的数组,并将旧数组的内容复制到新数组中。 Q:在构建栈(队列)的时候,未指定它的大小,为什么它们是“静态数据结构”呢? 在高级编程语言中,我们无须人工指定栈(队列)的初始容量,这个工作由类内部自动完成。例如,Java 的 ArrayList 的初始容量通常为 10。另外,扩容操作也是自动实现的。详见后续的“列表”章节。 Q:原码转补码的方法是“先取反后加 1”,那么补码转原码应该是逆运算“先减0 码力 | 383 页 | 18.48 MB | 1 年前3 Hello 算法 1.1.0 Go版本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 第 0 章 前言 hello‑algo.com 5 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文字,视频和图片具有更高的信息密度和结构化程度,更易于理解。在本书中,重点和难点知识将主 调用它的对象,能够对类的实例中包含的数据进行操作。 下面以几种常见的编程语言为例来说明。 ‧ C 语言是过程式编程语言,没有面向对象的概念,所以只有函数。但我们可以通过创建结构体(struct) 来模拟面向对象编程,与结构体相关联的函数就相当于其他编程语言中的方法。 ‧ Java 和 C# 是面向对象的编程语言,代码块(方法)通常作为某个类的一部分。静态方法的行为类似于 函数,因为它被绑定在类上,不能访问特定的实例变量。 65 更大的数组,并将旧数组的内容复制到新数组中。 Q:在构建栈(队列)的时候,未指定它的大小,为什么它们是“静态数据结构”呢? 在高级编程语言中,我们无须人工指定栈(队列)的初始容量,这个工作由类内部自动完成。例如,Java 的 ArrayList 的初始容量通常为 10。另外,扩容操作也是自动实现的。详见后续的“列表”章节。 Q:原码转补码的方法是“先取反后加 1”,那么补码转原码应该是逆运算“先减0 码力 | 383 页 | 18.48 MB | 1 年前3
 Hello 算法 1.0.0 Golang版为准,例如使用 None 来表示“空”。 ‧ 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 第 0 章 前言 hello‑algo.com 5 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文字,视 给调用它的对象,能够对类的实例中包含的数据进行操作。 下面以几种常见的编程语言为例来说明。 ‧ C 语言是过程式编程语言,没有面向对象的概念,所以只有函数。但我们可以通过创建结构体(struct) 来模拟面向对象编程,与结构体相关联的函数就相当于其他编程语言中的方法。 ‧ Java 和 C# 是面向对象的编程语言,代码块(方法)通常作为某个类的一部分。静态方法的行为类似于 函数,因为它被绑定在类上,不能访问特定的实例变量。 65 更大的数组,并将旧数组的内容复制到新数组中。 Q:在构建栈(队列)的时候,未指定它的大小,为什么它们是“静态数据结构”呢? 在高级编程语言中,我们无须人工指定栈(队列)的初始容量,这个工作由类内部自动完成。例如,Java 的 ArrayList 的初始容量通常为 10。另外,扩容操作也是自动实现的。详见后续的“列表”章节。 66 第 4 章 数组与链表 � 数据结构的世界如同一堵厚实的砖墙。0 码力 | 382 页 | 17.60 MB | 1 年前3 Hello 算法 1.0.0 Golang版为准,例如使用 None 来表示“空”。 ‧ 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 第 0 章 前言 hello‑algo.com 5 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文字,视 给调用它的对象,能够对类的实例中包含的数据进行操作。 下面以几种常见的编程语言为例来说明。 ‧ C 语言是过程式编程语言,没有面向对象的概念,所以只有函数。但我们可以通过创建结构体(struct) 来模拟面向对象编程,与结构体相关联的函数就相当于其他编程语言中的方法。 ‧ Java 和 C# 是面向对象的编程语言,代码块(方法)通常作为某个类的一部分。静态方法的行为类似于 函数,因为它被绑定在类上,不能访问特定的实例变量。 65 更大的数组,并将旧数组的内容复制到新数组中。 Q:在构建栈(队列)的时候,未指定它的大小,为什么它们是“静态数据结构”呢? 在高级编程语言中,我们无须人工指定栈(队列)的初始容量,这个工作由类内部自动完成。例如,Java 的 ArrayList 的初始容量通常为 10。另外,扩容操作也是自动实现的。详见后续的“列表”章节。 66 第 4 章 数组与链表 � 数据结构的世界如同一堵厚实的砖墙。0 码力 | 382 页 | 17.60 MB | 1 年前3
共 37 条
- 1
- 2
- 3
- 4














