Hello 算法 1.1.0 Swift版代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 res 记录。需要注意的是,Python 中 range(a, b) 对应的区间是“左闭右开”的,对应的遍历范围为 ?, ? + 1, … , ? − 1 : // === File: iteration var i = 1 // 初始化条件变量 // 循环求和 1, 2, ..., n-1, n while i <= n { res += i i += 1 // 更新条件变量 } return res } while 循环比 for 循环的自由度更高。在 while 循环中,我们可以自由地设计条件变量的初始化和更新步 骤。 例如在以下代码中,条件变量 ? 每轮进行两次更新,这种情况就不太方便用 */ func whileLoopII(n: Int) -> Int { var res = 0 var i = 1 // 初始化条件变量 // 循环求和 1, 4, 10, ... while i <= n { res += i // 更新条件变量 i += 1 i *= 2 } return res } 总的来说,for 循环的代码更加紧凑,while 循环更加灵活,两0 码力 | 379 页 | 18.47 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Swift 版代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 res 记录。需要注意的是,Python 中 range(a, b) 对应的区间是“左闭右开”的,对应的遍历范围为 ?, ? + 1, … , ? − 1 : // === File: iteration var res = 0 var i = 1 // 初始化条件变量 // 循环求和 1, 2, ..., n-1, n while i <= n { res += i i += 1 // 更新条件变量 } return res } while 循环比 for 循环的自由度更高。在 while 循环中,我们可以自由地设计条件变量的初始化和更新步 骤。 第 2 章 复杂度分析 www.hello‑algo hello‑algo.com 21 例如在以下代码中,条件变量 ? 每轮进行两次更新,这种情况就不太方便用 for 循环实现: // === File: iteration.swift === /* while 循环(两次更新) */ func whileLoopII(n: Int) -> Int { var res = 0 var i = 1 // 初始化条件变量 // 循环求和 1, 4, 10,0 码力 | 379 页 | 18.48 MB | 10 月前3
Hello 算法 1.0.0b5 Swift版段代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 res 记录。需要注意的是,Python 中 range(a, b) 对应的区间是“左闭右开”的,对应的遍历范围为 ?, ? + 1, … , ? − 1 。 // === File: iteration -> Int { var res = 0 var i = 1 // 初始化条件变量 // 循环求和 1, 2, ..., n-1, n while i <= n { res += i i += 1 // 更新条件变量 } return res } 在 while 循环中,由于初始化和更新条件变量的步骤是独立在循环结构之外的,因此它比 for 循环的自由度 更高。 第 2 章 com 20 例如在以下代码中,条件变量 ? 每轮进行了两次更新,这种情况就不太方便用 for 循环实现。 // === File: iteration.swift === /* while 循环(两次更新) */ func whileLoopII(n: Int) -> Int { var res = 0 var i = 1 // 初始化条件变量 // 循环求和 1, 4, ...0 码力 | 376 页 | 30.70 MB | 1 年前3
Hello 算法 1.0.0 Swift版段代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 res 记录。需要注意的是,Python 中 range(a, b) 对应的区间是“左闭右开”的,对应的遍历范围为 ?, ? + 1, … , ? − 1 : // === File: iteration var res = 0 var i = 1 // 初始化条件变量 // 循环求和 1, 2, ..., n-1, n while i <= n { res += i i += 1 // 更新条件变量 } return res } while 循环比 for 循环的自由度更高。在 while 循环中,我们可以自由地设计条件变量的初始化和更新步 骤。 第 2 章 复杂度分析 hello‑algo hello‑algo.com 21 例如在以下代码中,条件变量 ? 每轮进行两次更新,这种情况就不太方便用 for 循环实现: // === File: iteration.swift === /* while 循环(两次更新) */ func whileLoopII(n: Int) -> Int { var res = 0 var i = 1 // 初始化条件变量 // 循环求和 1, 4, 10,0 码力 | 378 页 | 17.59 MB | 1 年前3
Hello 算法 1.0.0b1 Swift版算法运行中,使用的内存空间主要有以下几种: ‧「输入空间」用于存储算法的输入数据; ‧「暂存空间」用于存储算法运行中的变量、对象、函数上下文等数据; ‧「输出空间」用于存储算法的输出数据; � 通常情况下,空间复杂度统计范围是「暂存空间」+「输出空间」。 暂存空间可分为三个部分: ‧「暂存数据」用于保存算法运行中的各种 常量、变量、对象 等。 ‧「栈帧空间」用于保存调用函数的上下文数据。系统每次调用函数都会在栈的顶部创建一个栈帧,函数返 .. return 0 } func algorithm(n: Int) -> Int { // 输入数据 let a = 0 // 暂存数据(常量) var b = 0 // 暂存数据(变量) let node = Node(x: 0) // 暂存数据(对象) let c = function() // 栈帧空间(调用函数) return a + b + c // 输出数据 } 常数阶常见于数量与输入数据大小 ? 无关的常量、变量、对象。 需要注意的是,在循环中初始化变量或调用函数而占用的内存,在进入下一循环后就会被释放,即不会累积占 用空间,空间复杂度仍为 ?(1) 。 // === File: space_complexity.swift === /* 常数阶 */ func constant(n: Int) { // 常量、变量、对象占用 O(1) 空间 let a0 码力 | 190 页 | 14.71 MB | 1 年前3
Hello 算法 1.0.0b2 Swift版算法运行中,使用的内存空间主要有以下几种: ‧「输入空间」用于存储算法的输入数据; ‧「暂存空间」用于存储算法运行中的变量、对象、函数上下文等数据; ‧「输出空间」用于存储算法的输出数据; � 通常情况下,空间复杂度统计范围是「暂存空间」+「输出空间」。 暂存空间可分为三个部分: ‧「暂存数据」用于保存算法运行中的各种 常量、变量、对象 等。 ‧「栈帧空间」用于保存调用函数的上下文数据。系统每次调用函数都会在栈的顶部创建一个栈帧,函数返 .. return 0 } func algorithm(n: Int) -> Int { // 输入数据 let a = 0 // 暂存数据(常量) var b = 0 // 暂存数据(变量) let node = Node(x: 0) // 暂存数据(对象) let c = function() // 栈帧空间(调用函数) return a + b + c // 输出数据 } 常数阶常见于数量与输入数据大小 ? 无关的常量、变量、对象。 需要注意的是,在循环中初始化变量或调用函数而占用的内存,在进入下一循环后就会被释放,即不会累积占 用空间,空间复杂度仍为 ?(1) 。 // === File: space_complexity.swift === /* 常数阶 */ func constant(n: Int) { // 常量、变量、对象占用 O(1) 空间 let a0 码力 | 199 页 | 15.72 MB | 1 年前3
Pop in Swift - 李洁信} 100+个⼦子类继承了 BaseViewController • 代码 > 1000 ⾏行, 难以维护 • ⾼高耦合, ⽗父类改动牵连所有⼦子类 • ⼦子类⾥里继承了⽆无⽤用的实例变量和⽅方法 • BaseTableViewController呢?复制代码? Solution A • Singleton • Helpers & Static Methods • 拆分了代码,但没有降低耦合 presenter.setLoadingViewHidden(false) } } But… • 有点笨重,实现代码多 • 使⽤用时要管理实例的创建和释放 • 使⽤用时⽤用通过间接变量, 多了⼀一层结构 Protocol Version protocol LoadingPresenter { var loadingView: CustomLoadingView! {0 码力 | 60 页 | 875.09 KB | 1 年前3
Hello 算法 1.2.0 繁体中文 Swift 版algorithm 算法 演算法 data structure 数据结构 資料結構 code 代码 程式碼 file 文件 檔案 function 函数 函式 method 方法 方法 variable 变量 變數 asymptotic complexity analysis 渐近复杂度分析 漸近複雜度分析 第 16 章 附錄 www.hello‑algo.com 368 English 簡體中文0 码力 | 379 页 | 18.79 MB | 10 月前3
共 8 条
- 1













