一、类型和运算
寻求帮助
1 | dir(obj) # 简单的列出对象obj所包含的方法名称,返回一个字符串列表 |
测试类型的三种方法
推荐第三种
1 | if type(L) == type([]): |
AndyRon's Blog
1 | dir(obj) # 简单的列出对象obj所包含的方法名称,返回一个字符串列表 |
推荐第三种
1 | if type(L) == type([]): |
有句开玩笑的话,大概是这样说的:“经典就是买的人很多,读的人却很少的作品”,而《百年孤独》可能就是这样的经典作品,读完真的是史诗般的孤独体验,可能我以后还会再去品味这部经典,但我确信近几年我不想,也不能再都去读了。🤦♀️
本文是对 Swift Algorithm Club 翻译的一篇文章。
Swift Algorithm Club是 raywenderlich.com网站出品的用Swift实现算法和数据结构的开源项目,目前在GitHub上有18000+⭐️,我初略统计了一下,大概有一百左右个的算法和数据结构,基本上常见的都包含了,是iOSer学习算法和数据结构不错的资源。
🐙andyRon/swift-algorithm-club-cn是我对Swift Algorithm Club,边学习边翻译的项目。由于能力有限,如发现错误或翻译不妥,请指正,欢迎pull request。也欢迎有兴趣、有时间的小伙伴一起参与翻译和学习🤓。当然也欢迎加⭐️,🤩🤩🤩🤨🤪。
本文的翻译原文和代码可以查看🐙swift-algorithm-club-cn/Union-Find
并查集(Union-Find)
并查集是一种数据结构,可以跟踪一组元素,它们分布在几个不相交(非重叠)子集合中。 它也被称为不相交集数据结构。
这是什么意思呢? 例如,并查集数据结构可以跟踪以下集合:
[ a, b, f, k ]
[ e ]
[ g, d, c ]
[ i, j ]
本文是对 Swift Algorithm Club 翻译的一篇文章。
Swift Algorithm Club是 raywenderlich.com网站出品的用Swift实现算法和数据结构的开源项目,目前在GitHub上有18000+⭐️,我初略统计了一下,大概有一百左右个的算法和数据结构,基本上常见的都包含了,是iOSer学习算法和数据结构不错的资源。
🐙andyRon/swift-algorithm-club-cn是我对Swift Algorithm Club,边学习边翻译的项目。由于能力有限,如发现错误或翻译不妥,请指正,欢迎pull request。也欢迎有兴趣、有时间的小伙伴一起参与翻译和学习🤓。当然也欢迎加⭐️,🤩🤩🤩🤨🤪。
本文的翻译原文和代码可以查看🐙swift-algorithm-club-cn/Selection Sampling
选取样本(Selection Sampling)
目标:从n个项的集合中随机选择k个项。
假设你有一副52张牌,你需要随机抽取10张牌。 这个算法可以让你达成。
这是一个非常快的版本:
1 | func select<T>(from a: [T], count k: Int) -> [T] { |
本文是对 Swift Algorithm Club 翻译的一篇文章。
Swift Algorithm Club是 raywenderlich.com网站出品的用Swift实现算法和数据结构的开源项目,目前在GitHub上有18000+⭐️,我初略统计了一下,大概有一百左右个的算法和数据结构,基本上常见的都包含了,是iOSer学习算法和数据结构不错的资源。
🐙andyRon/swift-algorithm-club-cn是我对Swift Algorithm Club,边学习边翻译的项目。由于能力有限,如发现错误或翻译不妥,请指正,欢迎pull request。也欢迎有兴趣、有时间的小伙伴一起参与翻译和学习🤓。当然也欢迎加⭐️,🤩🤩🤩🤨🤪。
本文的翻译原文和代码可以查看🐙swift-algorithm-club-cn/Kth Largest Element
第k大元素问题(k-th Largest Element Problem)
你有一个整数数组a
。 编写一个算法,在数组中找到第k大的元素。
例如,第1个最大元素是数组中出现的最大值。 如果数组具有n个元素,则第n最大元素是最小值。 中位数是第n/2最大元素。
以下是半朴素的解决方案。 它的时间复杂度是 O(nlogn),因为它首先对数组进行排序,因此也使用额外的 O(n) 空间。
1 | func kthLargest(a: [Int], k: Int) -> Int? { |
这是我学习《趣谈网络协议》的一篇笔记。
计算机网络是不仅需要背诵,而且特别需要将原理烂熟于胸的学科。
网络分层不恰当的比喻:一家公司也是分“层次”的,分总经理、经理、组长、员工。总经理之间有他们的沟通方式,经理和经理之间也有沟通方式,同理组长和员工。
TCP 在进行三次握手的时候,IP层和 MAC层对应都有什么操作呢?
第三层网络层中设计路由协议,说路由就像中转站,我们从原始地址 A 到目标地址D,中间经过两个中转站 A->B->C->D,是通过路由转发的。
这是我学习《趣谈网络协议》的一篇笔记。
协议如同人与人的对话,语言不通,无法沟通。
1 | public class HelloWorld { |
Xcode中不少有点图标和符号,平常使用不怎么注意,仔细思考🤔一下,有的还不清楚啥意思,这边我做个小小的归纳。
按照显示位置,大概分为以下四类:
这些字母或符合对应版本控制(Git,Xcode10已经不再支持SVN),如果没有使用Git,也可大概看看那些文件修改了或者是新加的。
M —— modified,已被修改,需要 commit
A —— added,文件是新添加的,已经add,需要 commit
R —— 文件被重命名
? —— 文件是新添加的,还没有add
D —— deleted,文件在服务器上已被删除,这时update的话,可删除本地的文件
C —— conflict,冲突
本文是对 Swift Algorithm Club 翻译的一篇文章。
Swift Algorithm Club是 raywenderlich.com网站出品的用Swift实现算法和数据结构的开源项目,目前在GitHub上有18000+⭐️,我初略统计了一下,大概有一百左右个的算法和数据结构,基本上常见的都包含了,是iOSer学习算法和数据结构不错的资源。
🐙andyRon/swift-algorithm-club-cn是我对Swift Algorithm Club,边学习边翻译的项目。由于能力有限,如发现错误或翻译不妥,请指正,欢迎pull request。也欢迎有兴趣、有时间的小伙伴一起参与翻译和学习🤓。当然也欢迎加⭐️,🤩🤩🤩🤨🤪。
本文的翻译原文和代码可以查看🐙swift-algorithm-club-cn/Minimum Spanning Tree(Unweighted))
最小生成树(未加权图)(Minimum Spanning Tree (Unweighted Graph))
最小生成树描述了包含访问图中每个节点所需的最小数目边的路径。
看下图:
本文是对 Swift Algorithm Club 翻译的一篇文章。
Swift Algorithm Club是 raywenderlich.com网站出品的用Swift实现算法和数据结构的开源项目,目前在GitHub上有18000+⭐️,我初略统计了一下,大概有一百左右个的算法和数据结构,基本上常见的都包含了,是iOSer学习算法和数据结构不错的资源。
🐙andyRon/swift-algorithm-club-cn是我对Swift Algorithm Club,边学习边翻译的项目。由于能力有限,如发现错误或翻译不妥,请指正,欢迎pull request。也欢迎有兴趣、有时间的小伙伴一起参与翻译和学习🤓。当然也欢迎加⭐️,🤩🤩🤩🤨🤪。
本文的翻译原文和代码可以查看🐙swift-algorithm-club-cn/Minimum Spanning Tree
最小生成树(加权图)(Minimum Spanning Tree (Weighted Graph))
这个主题有一篇辅导文章
连接的无向加权图的最小生成树(MST)具有来自原始图的边的子集,其将所有顶点连接在一起,没有任何循环并尽可能减少总边权重。 图中可以有多个MST。
有两种流行的算法来计算图形的MST - Kruskal算法和Prim算法。 两种算法的总时间复杂度为O(ElogE)
,其中E
是原始图的边数。
Sort the edges base on weight. Greedily select the smallest one each time and add into the MST as long as it doesn’t form a cycle.
根据权重对边进行排序。每次贪婪地选择最小的一个并且只要它不形成循环就加入MST。
Kruskal的算法使用并查集 数据结构来检查是否有任何其他边导致循环。逻辑是将所有连接的顶点放在同一个集合中(在并查集的概念中)。如果来自新边的两个顶点不属于同一个集合,那么将该边添加到MST中是安全的。
下图演示了这个步骤: