leetcode sqrt
2015-06-11 10:37
411 查看
这题是给出一个x,求平方根。
一种直接二分,一种牛顿迭代求不动点。
二分:
牛顿法:
一种直接二分,一种牛顿迭代求不动点。
二分:
class Solution { public: bool isAns(long long r, long long x) { if (r*r<=x && (r + 1)*(r + 1)>x) return true; return false; } int mySqrt(int x) { if (x <= 0) return 0; long tar = x; long long low = 0,high= x; long long mid = low + (high - low) / 2; while (!isAns(mid, tar)) { if ((mid + 1)*(mid + 1) <= tar) { low = mid+1; } else{ high = mid-1; } mid = low + (high - low) / 2; } return mid; } };
牛顿法:
#include <math.h> class Solution{ public: int mySqrt(int x) { if (x <= 0) return 0; double init = x / 2.0; double ans = init* 0.5 + x / (2 * init); while (fabs(ans - init) > 0.005) { init = ans; ans = init* 0.5 + x / (2 * init); } return (int)ans; } };
相关文章推荐
- 微软100题(78)链表和数组的区别
- Mail发送外部邮件
- processlist中哪些状态要引起关注
- UML中的图及其特征
- Wordpress,Joomla,Drupal国际顶尖CMS如何选择?
- Unity3D中世界坐标转换到NGUI世界坐标
- 社説 20150611 集団的自衛権 脅威を直視した議論が大切だ
- 坦克大战游戏代码
- Leetcode[81]-Search for a Range
- 6.11
- 【Leetcode Algorithm】Remove Nth Node From End of List
- 血流动力学相关概念和定律
- 也来开个博客,分享一下我掉过的坑!
- spring注解介紹
- 社説 20150611 GPS捜査 位置情報を適切に活用したい
- 微软100题(77)链表的题目
- Java中的移位操作以及基本数据类型转换成字节数组【收集】
- Shell脚本变量定义
- Excel Sheet Column Title&&Excel Sheet Column Number
- Linux启动报错UNEXPECTED INCONSISTENCY; RUN FSCK MANUALLY