找工作之面试题练习2
来源:互联网 发布:淘宝代销怎么刷销量 编辑:程序博客网 时间:2024/04/30 05:11
实现一个函数,对一个正整数n,算得到1需要的最少操作次数:
如果n为偶数,将其处以2; 如果n为奇数,可以加1或减1; 一直处理下去。
例子:
ret = func(7);
ret = 4,可以证明最少需要4次运算
n = 7
n—1 6
n/2 3
n-1 2
n/2 1
要求:实现函数(实现尽可能高效)
Int func(unsign int n);n为输入,返回最小的运算次数。
给出思路(文字描述),完成代码,并分析你算法的时间复杂度。
如果n为偶数,将其处以2; 如果n为奇数,可以加1或减1; 一直处理下去。
例子:
ret = func(7);
ret = 4,可以证明最少需要4次运算
n = 7
n—1 6
n/2 3
n-1 2
n/2 1
要求:实现函数(实现尽可能高效)
Int func(unsign int n);n为输入,返回最小的运算次数。
给出思路(文字描述),完成代码,并分析你算法的时间复杂度。
//第一种实现int func2(const unsigned int n){if(1 == n){return 0;}if(2 == n){return 1;}if(n % 2 == 0){return 1 + func2(n / 2);}else{int plus = func2(n + 1);int mines = func2(n - 1);return 1 + (plus < mines ? plus : mines);}return 0;}//第二种实现int func3(unsigned long n){if(n == 1)return 0;if(n == 3)return 2;if(n%2 == 0){return 1 + func3(n/2) ;}else{if((n+1)%4 == 0)return 3 + func3((n+1)/4);if((n-1)%4 == 0)return 3 + func3((n-1)/4);}return 0;}int func6(const unsigned int n){if(1 == n)return 0;if(3 == n)return 2;if(!(n & 0x01))return 1 + func6(n >> 1);else{if(!((n + 1) & 0x03))return 3 + func6((n + 1) >> 2);if(!((n - 1) & 0x03))return 3 + func6((n - 1) >> 2);}return 0;}//第三种实现int func_iterative(unsigned int n){int step = 0;while(n != 1 && n != 3){if( !(n & 0x01)){n >>= 1;++step;}else{if(!((n + 1) & 0x03)){++n;++step;}else if(!((n - 1) & 0x03)){--n;++step;}}}if(3 == n)step += 2;return step;}
//最新添加-----实验室大牛的又一改进版本
int func(const unsigned int n){ if(1 == n) { return 0; } if(3 == n) { return 2; } if(!(n & 0x01)) { return 1 + func(n >> 1); } else { return 3 + (!((n + 1) & 0x03) ? func((n + 1) >> 2) : func(n >> 2)); } return 0;}
- 找工作之面试题练习2
- 找工作之面试题练习1
- 程序员找工作之java面试题
- 2014年2月找工作面试题
- 找工作练手--一道面试题
- 找工作准备的面试题
- 找工作中常见的PHP面试题及答案(2)
- c++练习2 微软面试题
- 练习迅雷面试题
- 迅雷面试题练习
- 面试题-练习一
- 面试题练习
- 面试题练习
- 面试题练习
- 腾讯面试题练习
- 面试题练习01
- 软件测试面试题[找工作必看]
- 实习找工作笔试题面试题
- WEBUS2.0 In Action - 解析索引文件结构(2)
- 我的嵌入式学习之路——笔记计划
- Database system concept笔记(3)
- vs2012编译的程序在XP下运行提示无法定位输入点XXXXX到kernel32.dll
- Database system concept笔记(4)
- 找工作之面试题练习2
- base.css
- 百度——LBS.云 v2.0——云存储扩展字段——Android
- PostgreSQL字符串处理函数
- String 类的简单技巧实现
- 解释性语言和编译性语言的区别
- 黑马程序员_java基础之网络编程
- 图片的合成
- Android详细的对话框AlertDialog.Builder使用方法和自定义样式