问题描述 要求从N个元素中随机的抽取k个元素,其中N无法确定。例如: 这种应用的场景一般是数据流的情况下,由于数据只能被读取一次,而且数据量很大,并不能全部保存,因此数据量N是无法在抽样开始时确定的;但又要保持随机性,于是有了这个问题。 算法思想 假设数据序列的规模为 n,需要采样的数量的为 k。 ...
分类:
其他好文 时间:
2018-09-06 19:59:59
阅读次数:
186
[抄题]: Given a binary tree where every node has a unique value, and a target key k, find the value of the nearest leaf node to target k in the tree. He ...
分类:
其他好文 时间:
2018-09-06 02:45:10
阅读次数:
174
1、KMP算法 设有两串字符,第一串为主串,第二串为副串,求副串在主串的匹配index头。 主要是求next数组,感性认识是副串的前后缀匹配程度: - "A"的前缀和后缀都为空集,共有元素的长度为0; - "AB"的前缀为[A],后缀为[B],共有元素的长度为0; - "ABC"的前缀为[A, AB ...
分类:
编程语言 时间:
2018-09-04 00:18:22
阅读次数:
123
多么痛的领悟! 不要认为Prim不常见就用不到! 和Kruskal一样,Prim算法也是用来求MST的,也是体现了贪心的思想。 不同的是,Kruskal是针对边而言的,Prim是针对点而言的。Kruskal适用于稀疏图,Prim适用于稠密图,更值得一提的是,Prim可以不必保存每条边。 算法思想是, ...
分类:
编程语言 时间:
2018-09-02 23:53:01
阅读次数:
242
一、 主要算法思想: 采用了分治的思想:将一个大任务分割成不同的子任务,将线程放入不同的队列,一个线程对应一个队列。 1.“工作窃取算法”:某个线程执行完自己的队列里的任务时,会从其他队列里窃取任务来执行 2. 框架局限性: 存在竞争:双端队列里只有一个任务时 二、 应用 1. java8 中的pa ...
分类:
编程语言 时间:
2018-08-23 19:30:44
阅读次数:
157
算法思想: 每次从序列 (i=0.1.2.......n-1) 中选出一个i值作为最大或者最小值如此下去完成排序,具体做法是假定,i是最小或最大,再和i+1 .....n-1的值比较,以确定最大或者最小的序号,而后交换他们的值。 ...
分类:
编程语言 时间:
2018-08-20 01:08:09
阅读次数:
115
算法思想:希尔排序可以看作是插入排序的一种变种,唯一不同的事选择一个间隔(大于1的值),先对按照间隔选择的序列进行插入排序,最后蜕减到间隔数为1 也即普通插入排序,则完成排序 ...
分类:
编程语言 时间:
2018-08-20 00:32:53
阅读次数:
181
算法思想:从前往后对相邻的元素进行两两比较交换,每一趟会将最小或最大的元素“浮”到末端,最终达到完全有序 ...
分类:
编程语言 时间:
2018-08-20 00:31:05
阅读次数:
130
Dijkstra算法是用于求单源最短路的算法,也就是求出一个点到图上其他点的最短路,但是要求图中不能有负边权,时间复杂度为O(n2)。 算法思想是,先将源点的最短路置为0,每次取出已更新过最短路的点中,最短路最小的点,然后遍历与其相连的点,进行松弛操作(if(d[v]>d[u]+w<u,v> d[v ...
分类:
编程语言 时间:
2018-08-20 00:30:33
阅读次数:
176
算法思想:每步将一个待排序的记录,插入前面已经排序的序列适当位置上,并使之也有序,重复该过程,直到全部数据插入完为止。 ...
分类:
编程语言 时间:
2018-08-20 00:29:48
阅读次数:
136