leetCode---Implementint sqrt(int x).
来源:互联网 发布:windows redmine 安装 编辑:程序博客网 时间:2024/06/05 10:59
一. 题目:Implementint sqrt(int x).
Implementint sqrt(int x).
Compute and return the square root of x.
二. 思路分析
这道题很巧妙的运用了二分查找法的特性,有序,查找pos(在这道题中pos=value),找到返回pos,找不到返回邻近值。
因为是求数x(x>=0) 的平方根, 因此,结果一定是小于等于x且大于等于0,所以用二分查找法肯定能搜到结果。
以每一次的mid的平方来与target既数x相比:
如果mid*mid == x,返回mid;
如果mid*mid < x,那么说明mid过小,应让low = mid+1,在右边继续查找
如果mid*mid > x,那么说明mid过大,应让high = mid-1,在左边继续查找
若x无法开整数根号(在上述查找中没有找到),那么我们仍然可以利用之前对二分查找法总结的技巧,当target值不在数组中,low指向大于target的那个值,high指向小于target的那个值,由于我们需要向下取整的结果,所以我们返回high指向的值(这里high指向的值和high的值是同一个值),这个值就是所求得最接近起开根号结果的整数值。
因为leetcode的test case x=2147395599,在算mid*mid的时候造成溢出,所以mid不能使用int型来接,要使用long型防止溢出。
class Solution {public: int sqrt(int x) { int low = 0; int high = x; while(low <= high){ long mid = (long) (low + high) /2; if (mid * mid < x) low = (int)mid + 1; else if (mid * mid > x) high = (int)mid - 1; else return (int)mid; } return high; }};
0 0
- leetCode---Implementint sqrt(int x).
- 【leetcode】sqrt(int x)
- Sqrt(int x) leetcode java
- LeetCode-- Implement int sqrt(int x)
- 【LeetCode】69、int sqrt(int x).
- int sqrt(int x)
- Implement int sqrt(int x).
- Sqrt(int x) &&Sqrt(double x)
- [LeetCode]sqrt(int x)解题报告之二分查找
- [leetcode] sqrt(int num)
- 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)
- 出现了一个意外情况,不能完成所有你在设置中所要求的更改
- R.java was modified manually! Reverting to generated version!
- C# 关于委托的例子
- 简单的四则运算
- Reverse Words in a String III问题及解法
- leetCode---Implementint sqrt(int x).
- android 全屏幕
- 学习笔记
- jackson
- pandas处理缺失数据
- [Network Analysis] 复杂网络分析总结
- 基线核查---MySQL
- 笔记10-JAVA的初学浅识(Java 的分支结构)
- win10磁盘占有率100%