自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 block的变量捕获

先了解一下block的本质1.block本质上也是一个OC对象,它内部也有个isa指针2.block是封装了函数调用以及函数调用环境的OC对象3.block的底层结构如下图所示为了保证block内部能够正常访问外部的变量,block有个变量捕获机制 变量类型 捕获到block内部 访问方式 局部变...

2019-03-31 13:25:35 214

原创 +load方法和+initialize方法的调用

一. load 方法1.+load方法会在runtime加载类、分类时调用2. 每个类、分类的+load,在程序运行过程中只调用一次3.调用顺序3.1先调用类的+load,按照编译先后顺序调用(先编译,先调用)3.2调用子类的+load之前会先调用父类的+load3.3.再调用分类的+load,按照编译先后顺序调用(先编译,先调用)4. 直接拿IMP 执行load方...

2019-03-30 23:50:33 286

原创 KVC

1. setValue:forKey:的原理setValue:forKey:的原理注意: 直接给成员变量赋值是不会触发KVO,但是通过KVC修改成员变量是会触发KVO2.valueForKey:的原理...

2019-03-30 17:28:06 216

转载 跳跃表原理

最近看了一种数据结构叫做skipList,redis和levelDB都是用了它。Skip List是在有序链表的基础上进行了扩展,解决了有序链表结构查找特定值困难的问题,查找特定值的时间复杂度为O(logn),他是一种可以代替平衡树的数据结构。 下面是skipList的一个介绍,转载来的,源地址:http://kenby.iteye.com/blog/1187303,为防止...

2019-03-29 10:36:29 143

转载 Dijkstra 最短路算法

上周我们介绍了神奇的只有五行的 Floyd 最短路算法,它可以方便的求得任意两点的最短路径,这称为“多源最短路”。本周来来介绍指定一个点(源点)到其余各个顶点的最短路径,也叫做“单源最短路径”。例如求下图中的 1 号顶点到 2、3、4、5、6 号顶点的最短路径。与 Floyd-Warshall 算法一样这里仍然使用二维数组 e 来存储顶点之间边的关系,初始值如下。我们还需要用一个一...

2019-03-26 10:40:06 214

转载 Bellman-Ford 单源最短路径算法

Bellman-Ford 算法是一种用于计算带权有向图中单源最短路径(SSSP:Single-Source Shortest Path)的算法。该算法由Richard Bellman 和 Lester Ford 分别发表于 1958 年和 1956 年,而实际上 Edward F. Moore 也在 1957 年发布了相同的算法,因此,此算法也常被称为 Bellman-Ford-Moore 算法...

2019-03-26 10:15:42 1393

转载 dijkstra算法:寻找到全图各点的最短路径

dijkstra算法介绍:即迪杰斯特拉算法,是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止,是一种广度优先的搜索方法。dijkstra算法原理:最优子路径存在。假设从S→E存在一条最短路径SE,且该路径经过点A,那么可以确定SA子路径一定是S→A的最短路径。证明:反证法。如果子路径SA不是最短的,那么就必...

2019-03-22 11:42:31 1807

转载 最小生成树-Prim算法

Prim算法1.概览普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为最小。该算法于1930年由捷克数学家沃伊捷赫·亚尔尼克(英语:Vojtěch Jarník)发现;并在1957年由美国计算机科学家罗伯特·普里姆(英...

2019-03-21 13:15:38 1298

转载 最通俗易懂的01背包问题讲解

1、动态规划(DP)  动态规划(Dynamic Programming,DP)与分治区别在于划分的子问题是有重叠的,解过程中对于重叠的部分只要求解一次,记录下结果,其他子问题直接使用即可,减少了重复计算过程。  另外,DP在求解一个问题最优解的时候,不是固定的计算合并某些子问题的解,而是根据各子问题的解的情况选择其中最优的。  动态规划求解具有以下的性质:  最优子结构性质、子问题...

2019-03-21 11:48:06 743

转载 (七)图的邻接多重表存储法(超详细)

前面讲过,无向图的存储可以使用邻接表,但在实际使用时,如果想对图中某顶点进行实操(修改或删除),由于邻接表中存储该顶点的节点有两个,因此需要操作两个节点。为了提高在无向图中操作顶点的效率,本节学习一种新的适用于存储无向图的方法——邻接多重表。注意,邻接多重表仅适用于存储无向图或无向网。邻接多重表存储无向图的方式,可看作是邻接表和十字链表的结合。同邻接表和十字链表存储图的方法相同,都是独自...

2019-03-20 18:56:46 844

转载 (六)图的十字链表存储法详解

与邻接表不同,十字链表法仅适用于存储有向图和有向网。不仅如此,十字链表法还改善了邻接表计算图中顶点入度的问题。十字链表存储有向图(网)的方式与邻接表有一些相同,都以图(网)中各顶点为首元节点建立多条链表,同时为了便于管理,还将所有链表的首元节点存储到同一数组(或链表)中。其中,建立个各个链表中用于存储顶点的首元节点结构如图 1 所示:图 1 十字链表中首元节点结构示意图从图 1 可...

2019-03-20 16:46:51 2940 2

转载 (五)图的邻接表存储法详解

通常,图更多的是采用链表存储,具体的存储方法有 3 种,分别是邻接表、邻接多重表和十字链表。本节先讲解图的邻接表存储法。邻接表既适用于存储无向图,也适用于存储有向图。在具体讲解邻接表存储图的实现方法之前,先普及一个"邻接点"的概念。在图中,如果两个点相互连通,即通过其中一个顶点,可直接找到另一个顶点,则称它们互为邻接点。邻接指的是图中顶点之间有边或者弧的存在。邻接表存储图的实现方式是,...

2019-03-18 11:49:59 2736

转载 (四)图的顺序存储结构及C语言实现

使用图结构表示的数据元素之间虽然具有“多对多”的关系,但是同样可以采用顺序存储,也就是使用数组有效地存储图。使用数组存储图时,需要使用两个数组,一个数组存放图中顶点本身的数据(一维数组),另外一个数组用于存储各顶点之间的关系(二维数组)。存储图中各顶点本身数据,使用一维数组就足够了;存储顶点之间的关系时,要记录每个顶点和其它所有顶点之间的关系,所以需要使用二维数组。不同类型的图,存储的方...

2019-03-18 11:38:50 1177

转载 (三)什么是生成树,生成树(生成森林)详解

在学习连通图的基础上,本节学习什么是生成树,以及什么是生成森林。对连通图进行遍历,过程中所经过的边和顶点的组合可看做是一棵普通树,通常称为生成树。图 1 连通图及其对应的生成树如图 1 所示,图 1a) 是一张连通图,图 1b) 是其对应的 2 种生成树。连通图中,由于任意两顶点之间可能含有多条通路,遍历连通图的方式有多种,往往一张连通图可能有多种不同的生成树与之对应。连通图...

2019-03-18 11:38:05 5735 2

转载 (一) 什么是图存储结构

阅读:1,220 作者:解学武(数据结构)图的存储结构完全攻略图什么是连通图我们知道,数据之间的关系有 3 种,分别是 "一对一"、"一对多" 和 "多对多",前两种关系的数据可分别用线性表和树结构存储,本节学习存储具有"多对多"逻辑关系数据的结构——图存储结构。图 1 图存储结构示意图图 1 所示为存储 V1、V2、V3、V4 的图结构,从图中可以清楚的看...

2019-03-18 11:36:52 3028 1

转载 最大连续子序列之和

- (NSInteger)sumOfLargestConsecutiveSubsequenceForIntArray:(NSArray<NSNumber *> *)array { if ([array count] <= 0) { return 0; } NSInteger sum = [array[0] integer...

2019-03-14 10:26:20 188

转载 动态规划解最长公共子序列(LCS)

子序列形式化定义:给定一个序列X=<x1,x2,x3,x4...,xm>,另一个序列Z=<z1,z2,z3,z4...,zk>,若存在一个严格递增的X的下标序列<i1,i2,i3,...,ik>对所有的1,2,3,...,k,都满足x(ik)=zk,则称Z是X的子序列比如Z=<B,C,D,B>是X=<A,B,C,B,D,A,B>的子...

2019-03-14 09:43:02 179

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除