leetcode之Sqrt(x)
来源:互联网 发布:西安 长沙 知乎 编辑:程序博客网 时间:2024/05/21 10:41
原题如下:
Implement int sqrt(int x)
.
Compute and return the square root of x.
普通遍历方法肯定是超时的,这道题其实是一个有序数列中的查找问题,所以如果能想到这点儿,那么就能够想到采用最快的查找算法二分查找来进行求解,另外就是在编程时mid =(low+ high)/ 2是有可能越界的,所以可以采用其等价形式mid= low + (high- low)/2,另外就是求解过程中sq = mid *mid也是有可能越界的,所以需要将mid和sq都设成long long类型。还有就是因为参数和返回值都为int,在测试用例中2的平方根为1(即向下取整),所以最后需要返回high(而不是low)。class Solution {public: int sqrt(int x) {intlow = 0, high = x / 2 + 1;while(low <= high){ long long mid = low + (high - low) / 2;long long sq = mid * mid;if(sq == x)return mid;else if(x < sq)high = mid - 1;elselow = mid + 1;}return high; }};
另外还有一种算法是牛顿迭代法,这种方法是利用数学方程来简化求解问题,具体详见:http://www.cnblogs.com/AnnieKim/archive/2013/04/18/3028607.html
0 0
- leetcode之sqrt(x)
- LeetCode之Sqrt(x)
- leetcode之Sqrt(x)
- LeetCode之Sqrt(x)
- LeetCode之Sqrt(x)
- leetcode之sqrt(x)
- 【Leetcode】之sqrt(x)
- LeetCode之Sqrt(x)
- Leetcode之sqrt(x)
- LeetCode 之 Sqrt(x) — C 实现
- LeetCode: Sqrt(x)
- LeetCode sqrt(x)
- [Leetcode] Sqrt(x)
- LeetCode :Sqrt(x)
- leetcode 53: Sqrt(x)
- [LeetCode] Sqrt(x)
- Leetcode 69 sqrt(x)
- [Leetcode] Sqrt(x)
- linux命令英文全称
- Android 之 dex.jar和dx.jar问题
- Activity的四种launchMode
- 二叉堆(转载)
- centos6.2+nginx-1.2.3+php-5.3.17安装脚本
- leetcode之Sqrt(x)
- AppCrashView
- tomcat管理账户配置
- 今生只爱整数
- 可变函数定义及使用
- 广告常用概念小结
- java通过c调用python
- Ubuntu Linux下安装Oracle JDK
- 有关UITableView的contentSize、contentInset和contentOffset