面试相关
文章平均质量分 54
imck
做一个有思想的程序员
展开
-
字符串移位包含的问题(编程之美)
问题:给定两个字符串s1和s2,要求判断s2是否能够被通过s1做循环移位(rotate)得到的字符串包含。例如,S1=AABCD和s2=CDAA,返回true;给定s1=ABCD和s2=ACBD,返回false。原创 2014-09-21 20:26:12 · 495 阅读 · 0 评论 -
腾讯校园招聘一面总结
今天下午参加腾讯校招面试原创 2014-10-09 20:16:10 · 518 阅读 · 0 评论 -
图的遍历
http://blog.csdn.net/cqnuztq/article/details/8955970概述 遍历分为深度优先遍历和广度优先遍历,其对有向图和无向图都适用。深度优先,顾名思义,就是只要存在后续节点就一直往下走,直到没有后续节点或者后续节点已经被访问输出了;广度优先,就是节点一层一层的输出。举个例子, 上面的两个图转载 2014-10-10 15:27:21 · 805 阅读 · 0 评论 -
元查找树转双向链表
输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \ 4 8 12 16 转换成双向链表 4=6=8=10=12=14=16。 首先我们定义的二元查找树 节点的数据结构如下: struct BS原创 2014-10-03 11:47:40 · 374 阅读 · 0 评论 -
美团面试总结
美团一直是我非常向往的公司。一面:原创 2014-10-12 22:16:00 · 566 阅读 · 0 评论 -
概率面试
1、给你一个数组,设计一个既高效又公平的方法随机打乱这个数组(此题和洗牌算法的思想一致) 方法比较简单,基本思想是每次随机取一个数,然后把它交换到最后的位置。然后对前(n-1)个数使用递归的算法。 递归实现: 123456void suffle(int a[],int n){原创 2014-10-12 22:53:45 · 710 阅读 · 0 评论 -
用递归颠倒一个栈
用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5处在栈顶。原创 2014-10-04 20:22:21 · 784 阅读 · 0 评论 -
输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。
题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如输入整数22和如下二元树 10 / \原创 2014-10-03 15:19:33 · 1196 阅读 · 0 评论 -
桶中取黑白球问题
有一个桶,里面有白球、黑球各100个,人们必须按照以下规则把球取出来:每次从桶里面拿两个球如果是两个同色的球,就再放入一个黑球;如果是两个异色的球,就再放入一个白球。问题是:最后桶里面只剩下一个黑球的概率是多少?针对这样一个问题,我们有两种不一样的解法:方法一:首先,我们可以通过相应的数学式来建立与上述三个条件等同的表达方式。在这里,我们原创 2014-10-17 21:00:50 · 940 阅读 · 0 评论 -
【贪心算法】单源最短路径问题
一、 拓扑排序:算法si转载 2014-10-10 14:57:14 · 2440 阅读 · 0 评论 -
TCP为什么需要3次握手与4次挥手
http://blog.csdn.net/xifeijian/article/details/12777187为什么需要“三次握手” 在谢希仁著《计算机网络》第四版中讲“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。在另一部经典的《计算机网络》一书中讲“三次握手”的目的是为了解决“网络中存在延迟的重复分转载 2014-10-10 20:54:47 · 396 阅读 · 0 评论 -
概率/随机数算法
0-1等概率问题问题描述一个随机数产生器以概率P生成0,以概率(1-P)生成1,怎样生成等概率的0和1?主要思路如果用这个产生器产生两个位,出现00的概率为P^2,出现01的概率为P(1-P),出现10的概率为P(1-P),而出现11的概率为(1-P)^2。故而可以用10表示1,01表示0,从而保证生成0和1的概率是相同的。代码实现int gener转载 2014-09-21 19:46:50 · 1587 阅读 · 0 评论 -
求自然数0-1000000中1出现的次数
求自然数0-1000000中1出现的次数。考虑六位字符000000-999999,共有字符 6位*1000 000个数=6 000 000个字符。0-9这是个字符等概率出现,因此0-9的个数都为6 000 000/10=600 000个。由于前导0不影响1-9的个数,因此自然数0-999 999中,1-9出现的次数均为6 000 000。加上1000000中的那个1,因此最终答案为600 00原创 2014-09-21 20:04:43 · 1056 阅读 · 0 评论 -
一个文件,内含一千万行字符串,每个字符串在1K以内,要求找出所有相反的串对
一个文件,内含一千万行字符串,每个字符串在1K以内,要求找出所有相反的串对,如abc和cba。当时怎么想的忘记了,现在重新思考一下,文件的大小上限是10G,不可能在内存操作了。考虑设计一种hash使得如果两个字符串维相反串能得出相同的hash值,然后用该hash将文件中的字符串散列到不同的文件中,再在各文件中进行匹配。比如这样的hash函数对字符串上所有字符的ascii求和,因为长度在1K转载 2014-09-22 09:22:12 · 961 阅读 · 0 评论 -
删除两个双向链表值相同的结点
有双向循环链表结点定义为: struct node { int data; struct node *front,*next; }; 有两个双向循环链表A,B,知道其头指针为:pHeadA、pHeadB,请写一函数将两链表中data值相同的结点删除。原创 2014-09-22 12:48:36 · 1533 阅读 · 0 评论 -
磁盘访问题
腾讯比题:数据存储在磁盘上的排列方式会影响I/O服务的总时间。假设每磁道划分成10个物理块,每块存放1个逻辑记录。逻辑记录R1,R2,﹍﹍ ,R10存放在同一个磁道上,记录的安排顺序如下表所示: 物理块 1 2 3 4 5 6 7 8 9 10逻辑记录 R1 R2 R3 R4 R5 R6 R7 R8 R9原创 2014-09-16 22:10:43 · 1020 阅读 · 0 评论 -
求一个数组的最长递减子序列 比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2}
int lis(int *a, int n){int *dp = new int[n];dp[0] = 1;int max_i = 0;int max_len = 1;for(int i = 1; i {dp[i] = 1;for(int k = 0; k {if(a[k] > a[i] && dp[k]+1>dp[i]) {dp[i] = dp[k原创 2014-10-06 15:50:37 · 1722 阅读 · 0 评论 -
Edit Distance
Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2. (each operation is counted as 1 step.)You have the following 3 operations permitted on a word:原创 2014-10-08 16:22:20 · 361 阅读 · 0 评论 -
最长公共子序列和最长公共字串总结
两个问题和相似,又经常被原创 2014-10-05 17:14:44 · 561 阅读 · 0 评论