面试算法题目

来源:互联网 发布:nat穿透软件 编辑:程序博客网 时间:2024/06/04 19:09
  1. 看到一篇博客,总结了各种链表相关的问题,mark一下,感觉很不错~
    戳我:http://wuchong.me/blog/2014/03/25/interview-link-questions/
  2. 《编程之美》中“金刚坐飞机”问题:
  3. 《编程之美》中“瓷砖覆盖地板”问题的扩展问题:
  4. 《编程之美》2.3 寻找发帖水王的扩展题目-寻找发帖量最多的三个ID,他们发帖总数超过了帖子总数目N的1/4。参考:
    http://blog.csdn.net/tanyujing/article/details/8622362
  5. 《编程之美》2.10 寻找数组中的最大值的最小值的扩展题目-找出长度为N的数组中的第二大数,需要比较多少次?分治思想能否降低比较次数。
    个人认为:N次,设置两个临时变量保存最大和次大数,初始化为Integer.MIN_VALUE,然后从头到尾扫描一遍数组,如果当前数比最大数大,次大数赋值当前最大数,最大数更新当前数。比较的次数即N次即可。
  6. 《编程之美》 2.20 程序理解和时间分析
    给出程序段
#include <iostream>#include <limits>using namespace std;int main() {     int rg[] = {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,         20,21,22,23,24,25,26,27,28,29,30,31};     for(__int64 i =1; i < numeric_limits<__int64>::max(); i++) {         int hit = 0;         int hit1 = -1;         int hit2 = -1;         for(int j = 0; j < sizeof(rg)/sizeof(*rg) && (hit <= 2); j++) {              if((i % rg[j]) != 0) {                   hit++;                   if(hit == 1) {                       hit1 = j;                   } else if(hit == 2) {                       hit2 = j;                   } else break;//如果找到第三个不能整除的数,循环退出。              }         }         //如果hit不为2,就不会输出,只有满足hit为2且两个hit是连续的才输出。         if(hit == 2 && hit1+1==hit2) {              cout << "find " << i << endl;              break;         }     }     return 0;}

1)上段代码主要目的是为了找出这样一个数x, 使得数组rg中只有两个不能被x整除且两个不能被整除的数是连续的。
2)这样的数存在么?求符合这样的数的最小数。
参考:http://blog.csdn.net/erorr/article/details/5837391

0 0