2014美团网校园招聘研发类笔试(哈尔滨站)

1、

题目:一堆硬币,一个机器人,如果是反的就翻正,如果是正的就抛掷一次,无穷多次后,求正反的比例。

解析:假设某个阶段正面硬币的比例为p,则反面的比例为1-p,下一次翻转后,p的部分分为p/2的正面、p/2的反面,而1-p的反面部分全部变为正面。趋于平衡时,前后两次正反的比例应相等,即:p/(1-p)=(p/2+(1-p))/(p/2),得到p=2/3。

更直接一点,翻转前后正面(反面)相等,即p=p/2+(1-p),直接得到p=2/3。



2、概率题:一个汽车公司的产品,甲厂占40%,乙厂占60%,甲的次品率是1%,乙的次品率是2%,现在抽出一件汽车时次品,问是甲生产的可能性
40%*1%
3、

有100盏灯泡,第一轮点亮所有电灯,第二轮每两盏灯熄灭一盏,即熄灭第2盏,第4盏,以此类推,第三轮改变编号为3的倍数的电灯,第3盏,第6盏,如果原来那盏灯是亮的,就熄灭它,如果原来是灭的,就点亮它,以此类推,直到第100轮。问第100结束后,还有多少盏灯泡是亮的?

解答:

由题意最如果最后某一盏灯是亮着的,那么它一定是被切换了奇数次(第0次的时候全部都关着)。

首先来看一下6这盏灯,它被切换的次数是第1次(轮),第2次,第3次和第6次。

可以看出如果某一轮6被切换了,那么该轮数一定可以整数6,即是6的约数,由于约数是成对出现的,所以6被关掉的次数是偶数次。

但是是对于像4,16这样的完全平方数,由于他们都有一个约数k 使得 K的平方等于该完全平方数,所以其被关掉的次数应该为奇数,因为K只能被算一次。


所以该问题的答案是只有1-100的完全平方数,才是亮着的。

即1,4,3,16,25,36,49,64,81,100这10盏灯亮着。


*备注:

完全平方数:一个数如果是另一个整数的完全平方,那么我们就称这个数为完全平方数,也叫做平方数



4、链表翻转。给出一个链表和一个数k,比如链表1→2→3→4→5→6,k=2,则翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6,用程序实现

  1. struct Node  
  2. {  
  3.     int value;  
  4.     Node *next;  
  5. };  
  6.   
  7. Node* reverseList(Node *head, int k)  
  8. {  
  9.     if (NULL == head || k < 1)   
  10.     {  
  11.         return NULL;  
  12.     }  
  13.     if (k == 1)  
  14.     {  
  15.         return head;  
  16.     }  
  17.   
  18.     Node *newHead = NULL;  
  19.     Node *prev = NULL;  
  20.     Node *begin = head;  
  21.     Node *end = head;  
  22.     Node *p = NULL;  
  23.     Node *q = NULL;  
  24.     bool firstHandled = false;  
  25.     while (begin)  
  26.     {  
  27.         int count = k-1;  
  28.         end = begin;  
  29.         while (count && end->next != NULL)  
  30.         {  
  31.             end = end->next;  
  32.             count--;  
  33.         }  
  34.         if (count != 0)  
  35.         {  
  36.             if (newHead == NULL)  
  37.             {  
  38.                 newHead = begin;  
  39.             }  
  40.             else  
  41.             {  
  42.                 prev->next = begin;  
  43.             }  
  44.             return newHead;  
  45.         }  
  46.         p = begin->next;  
  47.         q = begin;  
  48.         while (q != end)  
  49.         {  
  50.             Node *temp = p->next;  
  51.             p->next = q;  
  52.             q = p;  
  53.             p = temp;  
  54.         }  
  55.         if (prev == NULL)  
  56.         {  
  57.             newHead = end;  
  58.         }  
  59.         else  
  60.         {  
  61.             prev->next = end;  
  62.         }  
  63.         prev = begin;  
  64.         prev->next = NULL;  
  65.   
  66.         begin = p;  
  67.     }  
  68.   
  69.     return newHead;  
  70. }  


5、一个函数access(),调用频率不能超过R次/sec,用程序实现一个函数,当超过R次/sec时返回access false,不超过时返回success


6、一个m*n的矩阵,从左到右从上到下都是递增的,给一个数elem,求是否在矩阵中,给出思路和代码

你可能感兴趣的:(2014美团网校园招聘研发类笔试(哈尔滨站))