题目72:如下程序的时间复杂度为(其中m>1,e>0)()

x = m;
y = 1;
while (x - y > e)
{
x = (x + y) / 2;y = m / x;
}
print(x);

A:log m
B:m的平方
C:m的1/2方
D:m的1/3方

解析:

1.x=(x+y)/2=(m+1)/2 m非常大,则 x=m/2;
y=m/x, x=m/2 则 y=2;
2.x=(x+y)/2=(m/2+2)/2=m/4+1 m非常大,则 x=m/4;
y=m/x, x=m/4 则 y=4; 
3.x=(x+y)/2=(m/4+4)/2=m/8+2 m非常大,则 x=m/8;
y=m/x, x=m/8 则 y=8;

.........
x=m/2n,y=2n
当x-y=m/2 n -2 n=0时 m/2 n -2 n=0 m=22n => n=(logm)/2

题目73:求fun(484)的返回值()

bool fun(int n){int sum=0;for(int i=1;n>sum;i=i+2)sum=sum+i;return (n==sum);
}

A: True
B:False

解析:这道题目做错了,以为是单纯的每次加2,最后加出来是个奇数。其实程勋的运行过程是这样的:
loop 1:sum=1, i=3
loop 2:sum=4, i=5
loop 3:sum=9, i=7
loop 4:sum=16,i=9
loop 5:sum=25,i=11
loop 6:sum=36,i=13
loop 7:sum=49,i=15
...
通过规律可以发现sum的值为循环次数的平方,22*22=484,循环退出时sum=484,函数返回true。

题目74:如下函数的f(1)的值为()

int f(int n){static int i=1;if(n>=5)return n;n=n+i;i++;return f(n);
}

A:5   B:6    C:7  D:8

解析:此题主要考查static,带此关键字之后变量只被初始化一次。该函数为递归调用。
f(1):n=2;i=2;调用f(2)
f(2):n=4;i=3;调用f(4)
f(4):n=7;i=4;调用f(7)
f(7):返回7
即最终函数返回结果为7

题目75:给定字符串(ASCII码0-255)数组,请在不开辟额外空间的情况下删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。例如:"   i    am a      little boy.    ",变成"i am a little boy",语言不限,但不要用伪代码作答,函数输入输出请参考如下的函数原型:

C++函数原型:
void FormatString(char str[],int len){ }

解析:

void FormatString(char str[],int len)
{assert(str!=NULL);  int i=0,j=0,k=0;while(str[i]==' ')i++;//i是第一个不为空的字符while(str[i]!='\0'){if(str[i]==' '&&str[i+1]==' '||str[i+1]=='\0'){i++;continue;}str[j++]=str[i++];//上边的if条件跳出之后为单词之间加了一个空字符,因为str[i]==' '&&str[i+1]!=''已跳出}str[j]='\0';
}

题目76:给定一颗二叉树,以及其中的两个node(地址均非空),要求给出这两个node的一个公共父节点,使得这个父节点与两个节点的路径之和最小。描述你程序的最坏时间复杂度,并实现具体函数,函数输入输出请参考如下的函数原型:C++函数原型:

strucy TreeNode{TreeNode* left;   //指向左子树TreeNode* right;   //指向右子树TreeNode* father;   //指向父亲节点
};
TreeNode* LowestCommonAncestor(TreeNode* first,TreeNode* second){ }

解析:由于这道题目中树的节点有指向父节点的指针,相对来说是比较好做的。代码如下:

int getHeight(TreeNode *node) {int height = 0;while (node) {height++;node = node->parent;}return height;
}TreeNode* LowestCommonAncestor(TreeNode* first,TreeNode* second) {int height1 = getHeight(first), height2 = getHeight(second), diff = height1 - height2;if (diff < 0) {diff = -diff;while(diff--) {second = second->parent;}} else {while(diff--) {first = first->parent;}}while (first != second) {first = first->parent;second = second->parent;}return first;
}

假设树结构里边并没有指向父节点的指针,那么这个题目应该怎么做呢?剑指offer 上边有关于这种情况的讨论,下边是他山之石:首先获得到两个节点的路径,然后将其转化为寻找路径中最后的公共点,该公共点为两个节点的最低公共祖先。

bool GetNodePath(TreeNode* pRoot, TreeNode* pNode, list<TreeNode*>& path)
{if(pRoot == pNode)return true;path.push_back(pRoot);bool found = false;vector<TreeNode*>::iterator i = pRoot->m_vChildren.begin();while(!found && i < pRoot->m_vChildren.end()){found = GetNodePath(*i, pNode, path);++i;}if(!found)path.pop_back();return found;
}TreeNode* GetLastCommonNode
(const list<TreeNode*>& path1, const list<TreeNode*>& path2
)
{list<TreeNode*>::const_iterator iterator1 = path1.begin();list<TreeNode*>::const_iterator iterator2 = path2.begin();TreeNode* pLast = NULL;while(iterator1 != path1.end() && iterator2 != path2.end()){if(*iterator1 == *iterator2)pLast = *iterator1;iterator1++;iterator2++;}return pLast;
}TreeNode* GetLastCommonParent(TreeNode* pRoot, TreeNode* pNode1, TreeNode* pNode2)
{if(pRoot == NULL || pNode1 == NULL || pNode2 == NULL)return NULL;list<TreeNode*> path1;GetNodePath(pRoot, pNode1, path1);list<TreeNode*> path2;GetNodePath(pRoot, pNode2, path2);return GetLastCommonNode(path1, path2);
}

今天就到这了,未完待续哦!

C/C++校招笔试面试经典题目总结八相关推荐

  1. 最新校招笔试面试六十题

    原文: 九月十月百度,迅雷,华为,阿里巴巴最新校招笔试面试六十题(11.05) 链接:http://blog.csdn.net/v_july_v/article/details/11921021 分类 ...

  2. 九月十月百度,迅雷,华为,阿里巴巴最新校招笔试面试六十题(11.05)

    九月十月百度,迅雷,华为,阿里巴巴,最新校招笔试面试六十题 http://blog.csdn.net/v_july_v/article/details/11921021 题记 本博客自2010年10月 ...

  3. 九月百度,迅雷,华为,阿里巴巴,最新校招笔试面试十题 .

    九月百度,迅雷,华为,阿里巴巴,最新校招笔试面试十题 http://blog.csdn.net/v_july_v/article/details/11921021 题记 本博客自2010年10月11日 ...

  4. 九月十月百度,迅雷,华为,阿里巴巴最新校招笔试面试三十题(10.18)

    九月十月百度,迅雷,华为,阿里巴巴,最新校招笔试面试三十题 题记 本博客自2010年10月11日开通以来,已经帮助了一大批人找到工作,特别是连续三年在每一年的9.10月份陪伴了至少三届毕业生找工作的旅 ...

  5. 数字IC设计工程师笔试面试经典100题-有答案

    转自知乎答主ictown_数字IC设计工程师笔试面试经典100题-有答案-陈恩 1:什么是同步逻辑和异步逻辑?(汉王) 同步逻辑是时钟之间有固定的因果关系.异步逻辑是各时钟之间没有固定的因果关系. 同 ...

  6. 牛客特制2020名企校招笔试面试求职攻略-技术篇

    复制这段内容后打开百度网盘手机App,操作更方便哦 链接:https://pan.baidu.com/s/1qJyOoKiSHJnI9BIXLht8mQ 或者点击: 牛客特制2020名企校招笔试面试求 ...

  7. 九月十月百度,迅雷,华为,阿里巴巴,最新校招笔试面试六十题

    九月迅雷,华为,阿里巴巴,最新笔试面试十题 8月15日,百度2道面试题: 1.来自<编程之美>的概率题:一个桶里面有白球.黑球各100个,现在按下述规则取球:的     i .每次从通里面 ...

  8. 九月十月百度,迅雷,华为,阿里巴巴,最新校招笔试面试五十题

    题记 本博客自2010年10月11日开通以来,已经帮助了一大批人找到工作,特别是连续三年在每一年的9.10月份陪伴了至少三届毕业生找工作的旅程,包括校招中的笔试面试,今年也不会例外,我会在本博客开通3 ...

  9. 九月百度,迅雷,华为,阿里巴巴,最新校招笔试面试十题(更新至9.24)

    题记 本博客自2010年10月11日开通以来,已经帮助了一大批人找到工作,特别是连续三年在每一年的9.10月份陪伴了至少三届毕业生找工作的旅程,包括校招中的笔试面试,今年也不会例外,我会在本博客开通3 ...

最新文章

  1. Intel GPU实现游戏与数据中心
  2. 我的新浪微博,顺便总结下近况
  3. 努比亚压力键不显示菜单问题
  4. 山东财经大学python实验六答案_实验六(带答案)
  5. SAP BSP和JSP页面里UI元素的ID生成逻辑
  6. python如何保持数据类型不变_python 可变和不可变数据类型、格式化输出和基础运算符...
  7. linux 星号 通配符,如何在bash中转义通配符/星号字符?
  8. 使用Aptana搭建Python开发环境
  9. 一题多解 —— 同时找到序列的最大值最小值
  10. 关于在nodejs上使用es6特性
  11. C3P0连接池 jar包 下载
  12. Fortran 95简单教程(
  13. opendrive中的几何形状
  14. 说一下html5 drag api,HTML5 DragAPI
  15. 单独使用mybatis整合mysql案例
  16. 孤尽班第四天--数据模型设计总结
  17. 外星人17r4原版系统_外星人Alienware 17R4 测评/升级
  18. Android 创建淡入淡出动画的详解
  19. Umeng App监管执法合规自查通知
  20. 四元数船舶领域Quaternion ship domain

热门文章

  1. Java 15.8.1 实验1 算术测试
  2. Android Wav音频文件裁剪
  3. 1899:【17NOIP提高组】小凯的疑惑
  4. 斯坦福Dan Boneh密码学——01 香农密码与完美安全
  5. 时薪15美元的ChatGPT外包工人,干的都是苦力活
  6. 最年轻的图灵奖得主---高德纳
  7. 私募多渠道扩张资本版图
  8. c语言ktv点歌系统链表,C语言链表实现歌手评分系统
  9. 软件安全进阶书籍不完全推荐-更新中
  10. 菜鸟的Unity自学日志8 添加第一个敌人—石像鬼