学过链表的应该都会写,但是这个题有个坑就是链表的头结点是存放数据的,这与大部分数据结构教材不同(我以为头结点不存放数据结果死活过不了)。和题解不同的是我手动给它安了一个不存放数据的头结点运用头插法。
作者: LouYu
浅谈 Swift 中 “面向协议编程” 思想
最近在某个 iOS 开发交流群里看到了一个非常基本、却又很典型的例子:
protocol Eatable { func eat() } extension Eatable { func eat() { print("吃东西") } } struct Person: Eatable { func eat() { print("吃米饭") } } let p1: Person = Person() let p2: Eatable = Person() p1.eat() p2.eat()
Combine 学习笔记(七):Foundation 中的 Publisher
为了方便使用,Foundation 对一些常用的操作扩充了基于 Publisher 的 API,我们在开发中可以直接进行调用。本文就逐个讨论这些 API 的具体用法。
Combine 学习笔记(六):Operator 与类型擦除
一、Operator
默认情况下,订阅某个 Publisher,Subscriber 中的 Input 和 Failure 要与 Publisher 的 Output 和 Failure 类型相同。然而实际开发中往往并没有这么理想,此时就要借助 Operator 进行转换。Operator 遵守 Publisher 协议,负责从数据流上游的 Publisher 订阅值,经过转换生成新的 Publisher 发送给下游的 Subscriber。