程序员面试经常碰到的题,欢迎大家补充
来源:互联网 发布:windows 组播测试工具 编辑:程序博客网 时间:2024/05/20 15:10
1 一个单向链表 1->2->3->4->5 把他变成 5->4->3->2->1 (要求不能改变节点的地址)
- void resv_Linklist(Node* head)
- {
- Node* a[3];
- a[0] = a[1] = NULL;
- a[2] = head;
- while(a[2]->next)
- {
- a[0] = a[1];
- a[1] = a[2];
- a[2] = a[2]->next;
- a[1]->next = a[0];
- }
- *head = *(a[2]);
- }
2给你一个10进制的数 将其变成2进制后会有多少个1
比如“3 变成 2进制后 是2个1”
是Brian Kernighan的算法,非常优美
C代码
- unsigned int v; // count the number of bits set in v
- unsigned int c; // c accumulates the total bits set in v
- for (c = 0; v; c++)
- {
- v &= v - 1; // clear the least significant bit set
- }
此循环的循环次数和v里面1的数量一样多,如11000,会循环两次,11000&10111, 10000&01111,最终c+2
3一个人上楼梯 可以有两种方式‘一次上一阶’和‘一次上两阶’
问题: 有一个10阶的楼梯 他有几种方式上去?
补充: 如果楼梯是1阶 ,他有一种上法(一次上一阶);如果楼梯是两阶他有2中上法(一次上一阶上2次和一次上2阶上一次);如果楼梯是3阶,他有3种上法(1+2,1+1+1,2+1)
此题实际为斐波那契额数列,可以想象成这样:
1)假设迈的最后一步是一个台阶则可能的上法有f(n-1)种
2)假设迈的最后一步是两个台阶则可能的上法有f(n-2)种
所以f(n)=f(n-1)+f(n-2)
TInt CmytestAppUi::Fibonacci( TInt n )
{
if ( n <= 2)
{
return n;
}
return Fibonacci( n - 1 ) + Fibonacci( n - 2 );
}
- 程序员面试经常碰到的题,欢迎大家补充
- 面试会经常碰到的几个问题
- 总结了一些MySQLDBA面试题目,欢迎大家补充。
- 关于block的总结,欢迎大家补充
- 面试中经常碰到的C语言算法
- 我的博客开通了,欢迎大家经常光顾。
- 浏览器兼容性问题,欢迎大家补充!
- 程序员面试经常遇到的三个问题
- 继续列举CSDN的BUG,欢迎大家补充!
- 做项目经理的一些管理经验,欢迎大家补充。
- Web开发的编码规范(欢迎大家补充)
- 常用的服务端口(欢迎大家补充)
- ORACLE经常碰到的问题
- 经常碰到的面试题
- 一个程序员的面试经历,大家来评评
- Java笔试题,经常碰到的题目,有答案
- java面试常问的问题,欢迎补充
- sql语法,有机会更新,欢迎大家补充
- Eclipse BIRT项目
- Java 类成员的初始化顺序
- C++设计模式 Adapter
- 图形设备/图形上下文
- 看了张孝祥的《绝对能够测试你的C语言功力的几个问题》
- 程序员面试经常碰到的题,欢迎大家补充
- 工厂模式
- 转一位好友的《中国软件业的断想》
- 提交页面,js修改的Label值丢掉?
- python pyqt4 qtwekit 实现百度自动登录领米粒
- c++ dlopen应用
- wamp win2003 drupal配置apache下url地址重写
- 真想给自己放个假了...
- 妖精为什么吃不到唐僧肉