面试算法题目

  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

posted @ 2015-07-16 10:04  evashi  阅读(122)  评论(0编辑  收藏  举报