《剑指offer》学习心得第三日
来源:互联网 发布:爱知日语培训 编辑:程序博客网 时间:2024/04/29 22:27
一、fabonacci数列
1、递归实现(不推荐)
int Fabonacci(int n){if( n == 0)return 0;if( n == 1)return 1;return Fabonacci(n-1) + Fabonacci(n-2);}
此种方式效率很低,而且有大量的重复计算,数字过大时容易造成程序栈溢出。
2、使用循环
int Fabonacci(int n){if( n == 0)return 0;if( n == 1)return 1;int firstNum = 0;int secondNum = 1;int result;for (int i=2; i<=n; ++i){result = firstNum + secondNum;firstNum = secondNum;secondNum = result;}return result;}
二、位运算相关
二进制中1的个数
1、常规解法(计算次数较多)
int NumberOf1(int num){int count = 0;unsigned int flag = 1;while (flag){if (num & flag)count++;flag = flag<<1;}return count;}
2、好的解法(有几个1比较几次)
int NumberOf1(int num){int count = 0;while (num){count++;num = num & (num - 1);}return count;}
三、数值的整数次方
1、判断输入的合法性,equal(base, 0.0) && exp <0 不合法,注意判断base的时候不能直接 == ,浮点数要减去要比较的数和很小的一个数0.0000001比较 (>-0.0000001 && <0.00000001)
2、计算abs(exp),利用公式(exp偶数、奇数)两种情况,递归计算pow
3、判断exp的符号,若为负则需计算倒数
0 0
- 《剑指offer》学习心得第三日
- 《剑指offer》学习心得第一日
- 《剑指offer》学习心得第二日
- 《剑指offer》学习心得第四日
- 剑指offer第三题
- 【剑指offer】第三题
- 《剑指Offer》第三章
- 剑指offer第三题
- 剑指offer第三章
- 阅读《剑指offer》第三章
- 剑指offer第三题Java
- 十月十四日学习心得
- [剑指offer学习心得]之:二维数组中的查找
- [剑指offer学习心得]之:替换空格
- [剑指offer学习心得]之:反转链表
- [剑指offer学习心得]之:二叉树的深度
- [剑指offer学习心得]之:树的子结构
- [剑指offer学习心得]之:重建二叉树
- 迭代器与生成器
- hdu 4585 Shaolin
- 用java代码计算Log(a)b
- Java中ArrayList和LinkedList区别
- C++语言之typedef
- 《剑指offer》学习心得第三日
- Play the Dice - HDU 4586 dp
- HDU 4063 线段与圆相交+最短路
- 电话客户服务模拟
- Ubuntu 10.04 安装网卡驱动
- 卡在精粹操盘的车辙眼睛
- mygui初探(一)基础
- linux远程开机(wakeonlan)
- html中翻书特效实现