知名公司经典算法笔试题和面试题答案(二)

编辑:李老师高考志愿助手

雅虎

  编程实现:把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列

  编程实现:找出两个字符串中最大公共子字符串,如"abccade","dgcadde"的最大子串为"cad"

  有双向循环链表结点定义为:

  1

  struct node

  2

  {

  3

  int data;

  4

  struct node *front,*next;

  5

  }; 有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中data值相同的结点删除。

网易

  两个圆相交,交点是A1,A2。现在过A1点做一直线与两个圆分别相交另外一点B1,B2。B1B2可以绕着A1点旋转。问在什么情况下,B1B2最长

  Smith夫妇召开宴会,并邀请其他4对夫妇参加宴会。在宴会上,他们彼此握手,并且满足没有一个人同自己握手,没有两个人握手一次以上,并且夫妻之间不握手。然后Mr. Smith问其它客人握手的次数,每个人的答案是不一样的。求Mrs Smith握手的次数

  有6种不同颜色的球,分别记为1,2,3,4,5,6,每种球有无数个。现在取5个球,求在一下 的条件下:

  5种不同颜色,

  4种不同颜色的球,

  3种不同颜色的球,

  2种不同颜色的球,

  它们的概率。

  有一次数学比赛,共有A,B和C三道题目。所有人都至少解答出一道题目,总共有25人。在没有答出A的人中,答出B的人数是答出C的人数的两倍;单单答出A的人,比其他答出A的人总数多1;在所有只有答出一道题目的人当中,答出B和C的人数刚好是一半。求只答出B的人数。

  从尾到头输出链表,题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下:

  1

  struct ListNode

  2

  {

  3

  int m_nKey;

  4

  ListNode* m_pNext;

  5

  }; 分析:这是一道很有意思的面试题。该题以及它的变体经常出现在各大公司的面试、笔试题中。

其它

  金币概率问题,题目:10个房间里放着随机数量的金币。每个房间只能进入一次,并只能在一个房间中拿金币。一个人采取如下策略:前四个房间只看不拿。随后的房间只要看到比前四个房间都多的金币数,就拿。否则就拿最后一个房间的金币。编程计算这种策略拿到最多金币的概率。

  找出数组中唯一的重复元素,1-1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次.每个数组元素只能访问一次,设计一个算法,将它找出来;不用辅助存储空间,能否设计一个算法实现?

  一排N(最大1M)个正整数+1递增,乱序排列,第一个不是最小的,把它换成-1,最小数为a且未知求第一个被-1替换掉的数原来的值,并分析算法复杂度。

  题目:输入四个点的坐标,求证四个点是不是一个矩形,关键点:

  相邻两边斜率之积等于-1,

  矩形边与坐标系平行的情况下,斜率无穷大不能用积判断。

  输入四点可能不按顺序,需要对四点排序。

  矩阵式螺旋输出

  求两个或N个数的最大公约数和最小公倍数。

  最长递增子序列。题目描述:设L=是n个不同的实数的序列,L的递增子序列是这样一个子序列Lin=,其中k1

  字符串原地压缩,题目描述:"eeeeeaaaff" 压缩为 "e5a3f2",请编程实现。

  字符串匹配实现,请以俩种方法,回溯与不回溯算法实现。

  一个含n个元素的整数数组至少存在一个重复数,请编程实现,在O(n)时间内找出其中任意一个重复数。

  给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。要求:空间复杂度O(1),时间复杂度为O(n)。

中国点击率最高的一篇文章 !