[leetcode][math] Sqrt(x)
2015-07-01 12:25
281 查看
题目:
Implement
Compute and return the square root of x.
思路一:从1开始逐步逼近 ———可以accept但是效率很低
注意判断条件是mid和x/mid的关系
思路三:牛顿迭代法——8ms
Implement
int sqrt(int x).
Compute and return the square root of x.
思路一:从1开始逐步逼近 ———可以accept但是效率很低
class Solution { public: int mySqrt(int x) { if (x < 0) return -1; if (x <= 1) return x; long long res = 2; long pre = 1; while (res*res <= x){ pre = res; res = res * res; } res = pre; while (res*res <= x){ pre = res; res = 2 * res; } res = pre; while (res*res <= x){ ++res; } return res - 1; } };思路二:二分查找——8ms
注意判断条件是mid和x/mid的关系
class Solution { public: int mySqrt(int x) { if(x<=1) return x; int left = 1; int right = x; while(left<=right) { // int mid = left + ((right-left)>>1); int mid = (right+left)>>1; if(mid == x/mid) return mid; else if(mid < x/mid) left = mid + 1; else right = mid - 1; } return right; } };
思路三:牛顿迭代法——8ms
class Solution { public: int mySqrt(int x) { if (x ==0) return 0; double pre; double cur = 1; do { pre = cur; cur = x / (2 * pre) + pre / 2.0; } while (abs(cur - pre) > 0.00001); return int(cur); } };
相关文章推荐
- 5.数据库管理(1)
- Java:String类的常用方法
- 分享 ASP.Net 网站设置 404错误跳转到指定页面的三种方法
- 多线程编程
- 算法导论(CLRS)答案
- 实战FFmpeg编译支持arm64(转)
- 更改Linux用户的登录shell环境
- DOM元素尺寸offsetWidth,scrollWidth,clientWidth等详解
- struts2学习笔记
- Android学习 18 ->网格控件GridView
- JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法
- 【Java 学习笔记】 HashMultimap(guava)
- 谈谈CListCtrl如何调整行高
- mysql突然出现大量慢sql,随后redis访问超时
- List,set,Map 的用法和区别
- [Objective-C] 通过objc_get/setAssociatedObject 在category里加入成员变量
- springmvc学习笔记---面向移动端支持REST API
- 2.JVM运行机制 -- JVM序列
- 获取checkbox复选框的值
- “413 Request Entity Too Large” 错误解决