09 2014 档案
摘要:黑球白球各100个,每次取两个球,同色则放入黑球,不同色则放入白球。问最后一个球是什么球?思想很巧妙,类比成100个1和100个0,黑球为0,白球为1.最终结果为所有的数的异或。如果黑白球各奇数个,异或值为1,最终剩下白球;如果黑白球各偶数个,异或值为0,最终剩下黑球。
阅读全文
摘要:思路还是相当地巧妙。求余数的话,(a+b)%n=(a%n+b%n)%n;用vector来表示整数的话(出现1的位置),可以避免溢出。注意第20行,在更新remainders[(j+r)%n]时,要确保每个remainders的每个序列都是递增的,不能存在相等的情况。 1 #include 2 #i...
阅读全文
摘要:编程之美2.4n=12时,1,11,12这3个数包含1,所以1的个数是5.Line 9是为了防止factor溢出。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 int countOne(int n) { 7 ...
阅读全文
摘要:最近不时看到epoll这个关键词,然后我表示一无所知,只知道这个东西比select好,现在大部分并行server端都是用这个。先说点前置知识。一般来说I/O模型可以分为:同步阻塞,同步非阻塞,异步阻塞,异步非阻塞IO同步阻塞IO:在此种方式下,用户进程在发起一个IO操作以后,必须等待IO操作的完成,...
阅读全文
摘要:在一个union类型结构中,所有的成员公用同样的存储空间,其占用的大小为其成员中需要空间最大者;union本身只保留一块地址空间,因为只有一个成员真正存储于该地址, 但这块地址也要满足内存对齐原则。 1 #include 2 3 union U1 { 4 int a; 5 cha...
阅读全文
摘要:When a process running in user mode requests additional memory, pages are allocated from the list of free page frames maintained by the kernel. This l...
阅读全文
摘要:linux源代码在https://www.kernel.org/就可以下。现在的稳定版本是3.16.3.因为简历上有个项目是内核有关的,为了准备一下面试,还是要重温一下内核才行。最基本的,哪些文件在哪个项目总要知道吧。。。为什么还没有offer。。tar没法直接角解压,只能先用xz解压,再用tar分...
阅读全文
摘要:完美洗牌问题,给定一个数组a1,a2,a3,...an,b1,b2,b3..bn,把它最终设置为b1,a1,b2,a2,...bn,an这样的。O(n)的算法,O(n)的空间。对于前n个数,映射为f(i)=2 * i + 1, 0 1, 1->3对于后n个数,映射为f(i)=2(i - n/2), ...
阅读全文
摘要:今天大半天的时间在看这个。以下主要源于百度百科,讲得还是比较清楚。这里也可以看出百度百科和wiki的差别,wiki的公式都写得很漂亮,百度百科只是摘。生成函数是说,构造这么一个多项式函数g(x),使得x的n次方系数为f(n)。 如:序列{0,1,2,3,4,5...n}的生成函数为:$f(x)=0+...
阅读全文
摘要:最近做笔试题经常要碰到什么组合题,这些都是高中或者大一大二接触的,现在都不记得了。如果编程题要是见到这个就肯定跪了。隔板法隔板法就是在n个元素间插入(b-1)个板,即把n个元素分成b组的方法。允许若干个人(或位置)为空的问题1. 将20个大小形状完全相同的小球放入3个不同的盒子,允许有盒子为空,但球...
阅读全文
摘要:1、对于一个内存地址是32位、内存页是8KB的系统。0X0005F123这个地址的页号与页内偏移分别是多少?0x0005f123/0x2000=0x2f.....0x1123。页号就是0x2f(47), 偏移是0x1123。(都是从0开始,注意0x2f表示前面有47页,那么基于0的下标,当前页应该是...
阅读全文
摘要:B-tree is a tree data structure that keeps data sorted and allows searches, sequential access, insertions, and deletions in logarithmic time. The B-tr...
阅读全文
摘要:题目1(2014腾讯笔试题)36辆车,6个跑道,最少轮数决出前3名。分析分6组,每组跑一次,进行排序。然后每组第一快的人再跑一遍,确定最快的3组。最后最快的第一组取3个人,第二快的人取2个人(因为最快的人一定在最快的第一组),第三快的人取1个人。共6个人。再跑一遍。所以总共是6+1+1=8轮。以下转...
阅读全文
摘要:转自http://blog.sina.com.cn/s/blog_587c016a0100nfeq.htmllinux下进程间通信IPC的几种主要手段简介:管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有...
阅读全文
摘要:软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。注意,信号只是用来通知某进程发生了什么事件,并不给该进程传递任何数据。简介收到信号的进程对各种信号有不同的处理方法。...
阅读全文
摘要:最大流算法,解决的是从一个起点到一个终点,通过任何条路径能够得到的最大流量。有个Edmond-Karp算法:1. BFS找到一条增广路径;算出这条路径的最小流量(所有边的最小值)increase;2. 然后更新路径上的权重(流量),正向边加上increase,反向边减去increase;3. 重复1...
阅读全文
摘要:腾讯笔试题,设计内存池,alloc和free都是O(1)。和LRUCache类似,这里用了一个list表示可用的空间,用一个map来记录这块内存是否已分配,这样free的时候才可能O(1)。 1 class MemPool { 2 public: 3 void init(in...
阅读全文
摘要:Roman to IntegerGiven a roman numeral, convert it to an integer.Input is guaranteed to be within the range from 1 to 3999.搜了一下,才知道这道题可以写这么简洁。 1 class ...
阅读全文
摘要:huffman是非常基础的压缩算法。实现霍夫曼树的方式有很多种,可以使用优先队列(Priority Queue)简单达成这个过程,给与权重较低的符号较高的优先级(Priority),算法如下:⒈把n个终端节点加入优先队列,则n个节点都有一个优先权Pi,1 ≤ i ≤ n⒉如果队列内的节点数>1,则:...
阅读全文
摘要:拥塞控制算法:1.加性增、乘性减;2.慢启动;3.对超时事件作出反应;整体过程如下:慢启动->到达阈值->加性增(窗口+1个MSS),这个阶段叫拥塞避免(CA)->3个冗余ack丢包(事件)->阈值和窗口都缩小为一半(乘性减), 然后加性增(CA)->快速重传,并等待确认,这个阶段叫快速恢复,如果没...
阅读全文
摘要:作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~1. 首先嘛,你得在浏览器里输入要网址:2. 浏览器查找域名的...
阅读全文
摘要:最近想搞spark。没有集群环境,想先在单机上跑。但是两年前一直用到现在的virtualbox已经太老,很多源都停更了。所以准备装ubuntu14.04。0. 更新源。163的源有问题,用的是sohu的源; 1 deb http://mirrors.sohu.com/ubuntu/ trusty m...
阅读全文
摘要:escape()除了 ASCII 字母、数字和特定的符号外,对传进来的字符串全部进行转义编码,因此如果想对URL编码,最好不要使用此方法。而encodeURI() 用于编码整个URI,因为URI中的合法字符都不会被编码转换。encodeURIComponent方法在编码单个URIComponent(...
阅读全文
摘要:constconst指针1 char greeting[] ="hello"; 2 char* p = greeting; // non-const pointer, non-const data3 const char* p = greeting; // non-const pointer, co...
阅读全文
摘要:A suffix tree (also called PAT tree or, in an earlier form, position tree) is a compressed trie containing all the suffixes of the given text as their...
阅读全文
摘要:1 top - 11:22:42 up 9:53, 1 user, load average: 0.00, 0.01, 0.052 Tasks: 137 total, 1 running, 136 sleeping, 0 stopped, 0 zombie3 Cpu(s): 3....
阅读全文
摘要:字典树 1 class Trie { 2 public: 3 Trie() { 4 root = new Node(); 5 } 6 7 ~Trie() { 8 destroy(root); 9...
阅读全文
摘要:最大公约数,根据《编程之美》递归版写的非递归版:1. 对于y和x来说,如果y=k*y1, x = k * x1。那么有gcd(y,x)=k*gcd(y1, x1);2. 如果x=p*x1, p是素数(质数),并且y%p != 0,那么gcd(x, y) = gcd(p * x1, y) = gcd(...
阅读全文
摘要:1。给个sorted array, 只包含不重复整数,数值范围在 [0,99]中间, 按格式打印其余数值:输入: [0,1,3,50,75]输出: [2,4-49,51-74,76-99]请写出程序,及 testing cases。 1 string findConsecutive(vector n...
阅读全文
摘要:一个决定性问题C 若是为NPC,则代表它对NP是完备的,这表示:它是一个NP问题,且其他属于NP的问题都可归约成它。满足条件2(无论是否满足条件1)的问题集合被称为NP-hard。一个NP-hard问题至少跟NPC问题一样难。 有一类问题已经被证明属于NP-hard但不属于NP,即,这类问题至少与N...
阅读全文
摘要:7.4Write methods to implement the multiply, subtract, and divide operations for integers. Use only the add operator.比较简单。但是要封装得好。7.5 Given two squares...
阅读全文
摘要:哲学家进餐问题:(1) 在什么情况下5 个哲学家全部吃不上饭?考虑两种实现的方式,如下:A.算法描述: 1 void philosopher(int i) {/*i:哲学家编号,从0 到4*/ 2 while (TRUE) { 3 think( ); /*哲学家正在思考*/ ...
阅读全文
摘要:读写锁是用来解决读者写者问题的,读操作可以共享,写操作是排他的,读可以有多个在读,写只有唯一个在写,同时写的时候不允许读。互斥锁与读写锁的区别:当访问临界区资源时(访问的含义包括所有的操作:读和写),需要上互斥锁;当对数据(互斥锁中的临界区资源)进行读取时,需要上读取锁,当对数据进行写入时,需要上写...
阅读全文
摘要:今年看到一篇文章还是很受启发。If you have the guts to start selling what you believe in, customers who share your perspective will join in the cause. Not everyone wi...
阅读全文
摘要:In computer science, functional programming is a programming paradigm, a style of building the structure and elements of computer programs, that treat...
阅读全文
摘要:今年汤姆斯杯的时候,大马进了决赛,拿督很漂亮地拿了第一分,后面几场大马打得不好,输了。拿督无限接近于汤杯冠军。世锦赛刚刚结束,拿督0:2不敌谌怂,再次与冠军失之交臂。每次看完羽毛球赛,心情都不好。只是,比赛结束,该喜欢谁,还喜欢谁。
阅读全文