随笔分类 - 数据结构和算法
摘要:整数划分问题是将一个正整数n拆成一组数连加并等于n的形式,且这组数中的最大加数不大于n。 如6的整数划分为 6 5 + 1 4 + 2, 4 + 1 + 1 3 + 3, 3 + 2 + 1, 3 + 1 + 1 + 1 2 + 2 + 2, 2 + 2 + 1 + 1, 2 + 1 + 1 + 1 + 1 1 + 1 + 1 + 1 + 1 + 1 共11种。下面介绍一种通过递归方法得到一个正整数的划分数。 递归函数的声明为 int split(int n, int m);其中n为要划分的正整数,m是划分中的最大加数(当m > n时,最大加数为n), 1 当n = 1或m = 1时,s
阅读全文
摘要:1. 给你一个长度为N的链表。N很大,但你不知道N有多大。你的任务是从这N个元素中随机取出k个元素。你只能遍历这个链表一次。你的算法必须保证取出的元素恰好有k个,且它们是完全随机的(出现概率均等)。 解:先选中前k个,从第k+1个元素到最后一个元素为止,以k/i(i=k+1, k+2,...,N)的概率选中第i个元素,并且随机替换掉一个原先选中的元素,这样遍历一次得到k个元素,可以保证完全随机选取。这个算法叫做蓄水池抽样,在某门课上听到的,证明起来也不是很复杂。 证:最后一个元素选中概率=K/N,倒数第2个元素选中概率=(K/N-1)*(1-(K/N)*(1/K))=K/N,以此类推……2.
阅读全文
摘要:按层次遍历树中结点void LayerOrderTraverse(BiNode* T){ Queue<Node *> q; if(NULL == T) return; q.push(T); while(!q.isEmpty()) { T = q.pop(); printf("%d ",T->data); if(T->lchild) q.push(T->lchild); if(T->rchild) q.push(T->rchild); }}
阅读全文
摘要:N个鸡蛋放到M个篮子中,篮子不能为空,要满足:对任意不大于N的数量,能用若干个篮子中鸡蛋的和表示。写出函数,对输入整数N和M,输出所有可能的鸡蛋的放法。比如对于9个鸡蛋5个篮子解至少有三组:1 2 4 1 11 2 2 2 21 2 3 2 1思路:C/C++ code int F( int p[], int n, int m ){ if( n < m ) return 0; if( m == 1 ) return !( 1 - n ); int sum = 0; for( int i = ( n - 1 ) / ( m - 1 ); i <= ( n + 1 ) / 2; i++
阅读全文
摘要:电话一面 60min1. (项目) 你做的最有技术含量的项目是什么及相关的问题2. (项目) 介绍项目key-value缓存系统,LRU算法(我的项目)3. (C++) C语言内存分配机制4. (C++) 堆和栈的区别。判断某些情况变量在内存中的位置(堆栈)5. (C++) Static6. (C++)虚函数实现7. (算法) 给定1亿个数,范围5000-50000,排序。变形:有1%的数不在这个范围内8. (算法) 快排原理,最好和最差情况的例子,复杂度9. (数学) N级楼梯,每次能上1级或2级,有多少种上法10. (网络) 三次握手,第2次握手丢了怎么办11. (网络) TCP拥塞控制1
阅读全文
摘要:为什么我们要说倒排索引呢? 因为倒排索引是目前 搜索引擎公司最对搜索引擎最常用的存储方式.也是搜索引擎的核心内容!在搜索引擎实际的引用之中,有时需要按照关键字的某些值查找记录,所以我们是按照关键字建立索引,这个索引我们就称之为: 倒排索引, 而带有倒排索引的文件我们又称作: 倒排索引文件 也可以叫它为: 倒排文件 来实现快速的检索与高速的效率!那我想问下 什么是倒排表呢? 倒排文件中的 次关键字索...
阅读全文

浙公网安备 33010602011771号