IT名企笔试面试题
文章平均质量分 71
自己参加过的知名企业(如百度,360,腾讯,美团等)和在网上找的一些具备代表性的笔试面试题分享给那些正在找工作或者将来找工作的小伙伴们,每道题都附带自己的解答思路与过程。
这个家伙很懒~
这个作者很懒,什么都没留下…
展开
-
【美团校招笔试题】去除字符串首尾空格,中间多个空格只保留一个
要求:这是本人参加美团校招在线考试笔试题,如果此行为违反了美团校招笔试题商业保密性,请与本人联系。原创 2016-03-10 10:17:01 · 2653 阅读 · 1 评论 -
【腾讯校招在线考试附加题】将一个10进制数转换为四位定长的36进制数
要求:思路:首先很容易知道当n的值35时,我们我们举几个简单的例子来分析一下:如n=36,则最终结果为0010,我们知道将一个10进制数转换为k进制数采用的是除k取余,即将该数n对k取余所得结果放在最低位,然后将n不断除以k然后取余放在次低位直至余数为0为止。如:36%36=0,所以最终结果最低位为0,然后将(36/36)%36=1,所以次低位为1,然后将(1/36)%36=0所以循环原创 2016-03-14 21:12:56 · 1926 阅读 · 0 评论 -
求某一字符串的最长重复子串
要求:给定一个字符串,求该字符串的最长重复子串,最长重复子串是指在一个主串中,重复子串中最长的那一个,如:abcdefadef 则答案为:def。预备知识:要解决此题,要用到后缀数组(用指针数组来表示)思路:先用后缀数组存储主串的每个子串的后缀,然后对后缀数组中的元素进行排序。最后通过扫描相邻两个数组中的后缀来判断最长的子串基于此思路代码如下:#include #include原创 2016-03-11 14:24:18 · 3130 阅读 · 0 评论 -
句内单词反转
要求:将一个字符串在句内按单词反转,如将I am a student.反转后输出student. a am I思路一:很容易观察到输出后的结果是在原字符串基础上按单词逆序输出,因此很容易想到用栈来实现,因为栈是用来先进后出的一种数据结构,因此我们可以将每个单词入栈,然后出栈即为结果。思路二:可以考虑用反转函数来实现,即先将整个句子反转,然后再将每个单词反转。如:将原字符串反转后为:原创 2016-03-10 11:37:19 · 1243 阅读 · 0 评论 -
用动态规划解决最长公共子序列
要求:最长公共子序列,英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。而最长公共子串(要求连续)和最长公共子序列是不同的 运用动态规划解决,不懂的可以参考任意一本算法书,一般都会介绍动态规划算法,以下部分解析选自算法书上。原创 2016-03-12 16:37:30 · 1296 阅读 · 0 评论 -
找出一个整型数组中只出现了一次的数字
要求:一个整型数组中除了两个数字外(记为X,Y),其余数字都出现了两次,请写程序找出这两个只出现了一次的数字,要求:时间复杂度为O(n),空间复杂度为O(1)。 思路:假设数组中只有一个数字出现了一次,则很容易想到将数组中全部元素进行异或运算的结果即为只出现了一次的元素,所以如果是两个元素出现了一次,则异或后的结果为这两个元素异或后的结果(记为S),因为这两个数字不一样,所以最终的结果原创 2016-03-12 21:27:58 · 1540 阅读 · 0 评论 -
【美团校招在线考试笔试题】钱币面值组合
要求:假设我们有8种不同的钱币面值{1,2,5,10,20,50,100,200},用这些钱币组合成一个给定的数值n,如:n=200.那么一种可能的组合方式为:200=3*1+1*2+1*5+2*20+1*50+1*100.求总共存在多少种组合方式?注:这是本人参加美团校招在线考试的笔试题(共两道,另一题请参看我的博客:【美团校招笔试题】去除字符串首尾空格,中间多个空格只保留一个)思路一:原创 2016-03-13 10:01:30 · 2997 阅读 · 1 评论 -
算术表达式
题目描述: 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。输入: 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。输出: 对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。样例转载 2016-03-15 21:58:36 · 2245 阅读 · 0 评论 -
顺时针打印数组
要求:输入一个矩阵,按照从外向里以顺时针的顺序打印出每一个数字。如:如果输入的矩阵为:1 2 3 45 6 7 89 10 11 12 13 14 15 16 则输出结果为:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.思路:根据题目描述,我们可以得到一些提示信息,即我们可以把该矩阵看作是一个原创 2016-03-16 18:35:18 · 29320 阅读 · 0 评论 -
打印二叉树和为某一值的路径
要求:输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。二叉树的节点定义如下:struct BTNode{ int data; BTNode *leftChild; BTNode *rightChild;};思路:因为求路径是从根节点到叶子结点,所以我们可以考虑二叉树的先序遍历框架,如下所示:原创 2016-03-16 20:39:17 · 2451 阅读 · 0 评论 -
字符串的组合
要求:输入一个字符串,输出该字符串的所有组合。如:若字符串为:abc,则应输出:(空集),a、b、c、ab、ac、bc、abc.思路:考虑到数学中的排列组合知识,我们知道所谓组合即是在字符串中选取某些字符组合在一起,而在二进制中我们可以用0代表未选取某字符,1代表选取了某字符,这样自然可以想到用位运算来实现该过程。位运算结果为1则代表该位被选取。如000代表空集,001代表选取最后一个字符原创 2016-03-17 16:32:38 · 4054 阅读 · 0 评论 -
字符串的排列
要求:输入一个字符串,打印出该字符串中的字符的所有排列。如:输入字符串abc,则打印出abc,acb,bac,bca,cab,cba.思路:我们可以把一个字符串看成是两部分组成:第一部分为它的第一个字符,第二部分为余下的全部字符。求整个字符串的全排列我们可以看作是:首先求所有可能出现在第一个位置的字符,即把第一个字符和余下的每一个字符交换,第二部:固定第一个字符,求余下字符的全排列。这个时原创 2016-03-17 17:10:35 · 27083 阅读 · 0 评论 -
删除主串中模式串出现的字符
要求:输入一个主串X和模式串Y,要求删除主串X中在模式串Y中出现的所有字符。如:主串X:welcome to tencent. 模式串Y:aeio。则输出结果为:wlcm t tncnt.思路:最直接的思路就是用两层for循环,外层for循环扫描主串X,内层for循环用来扫面当前主串X中的字符是否在模式串Y中出现,如果出现则去除该字符,即将从该字符往后到主串末尾全部字符往前移动一位。但这样原创 2016-03-17 20:05:40 · 1734 阅读 · 0 评论 -
将一个数组划分为和差值最小的子数组
要求:将数组中的数划分为两组,使得两个子数组的和的差值最小,数组中的数的取值范围为0如:a[]={2,4,5,6,7},得出的两组数:{2,4,6}和{5,7},abs(sum(a1)-sum(a1))=0;如:{2,5,6,10},abs(sum(2,10)-sum(5,6))=1;所以:子数组为:{2,10}和{5,6}。思路:很容易知道如果选取的某个子数组的和currentS原创 2016-03-18 17:21:11 · 21297 阅读 · 2 评论 -
【BAT经典算法面试题系列】求和为n的连续正整数
马上就要到9月份了,意味着一年一度的秋招就要开始了,相信不论是正在实习的童鞋还是马上就要找工作的童鞋,BAT无疑是国内的“明星企业”,是每个学计算机的小伙伴们心之向往的企业,但是呢?对于进BAT来讲,即使你项目经验非常丰富,想进BAT,还有一道门槛要过那就是算法面试,尤其是想去百度的小伙伴们,那算法必须得考,也是面试中的重点。说实话,对于算法这个东西,真的得靠天赋的,不是像项目那样,你多做多动手自原创 2016-08-12 11:11:16 · 5185 阅读 · 2 评论