LeetCode Sqrt(x)
来源:互联网 发布:多益网络股票代码 编辑:程序博客网 时间:2024/06/06 23:57
原题链接在这里:https://leetcode.com/problems/sqrtx/
很自然的想到由小到大每个数算平方和x比较,但如此会用O(n)时间。
类似此类查找可以用 Binary Search, 先找middle = (left + right)/2, middle^2 和 x 比较,比x小就在middle 和 right这段找,反之亦然。
Note: 1. middle 要设为long, 否则middle * middle 可能overflow
2. while loop的条件是l<=r, 别忘了=
3. return 别忘了加cast
4. 即使这不是一个perfect square 也是返回right, 因为此时right就是那个较小的值。
AC Java:
public class Solution { public int mySqrt(int x) { //Binary Search if(x<0){ return 0; } int l = 0; int r = x; while(l<=r){ //error long middle = (l+r)/2; if(middle * middle < x){ l = (int)middle + 1; }else if(middle * middle >x){ r = (int)middle - 1; }else{ return (int)middle; //error } } return r; }}
0 0
- 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)
- leetcode:Sqrt(x)
- 【leetcode】sqrt(int 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)
- QQ强制下线的实现,Activity与Broadcast组件的在应用
- Unity3D逆向基础教程第二课
- linux 安装jdk及tomcat指定jdk版本
- android开发出现No Launcher activity found!
- Unity3D逆向基础教程第三课
- LeetCode Sqrt(x)
- 信息检索学习笔记
- Unity3D逆向基础教程第四课
- 递归算法及经典案例
- 抽象工厂模式【转载】
- Unity3D逆向基础教程第五课
- java 发送HTTPS请求
- AndroidStudio安装
- 2015长春网赛被虐纪实