LeetCode 69. Sqrt(x) (平方根)
Implement int sqrt(int x)
.
Compute and return the square root of x.
x is guaranteed to be a non-negative integer.
Example 1:
Input: 4 Output: 2
Example 2:
Input: 8 Output: 2 Explanation: The square root of 8 is 2.82842..., and since we want to return an integer, the decimal part will be truncated.
题目标签:Math
题目给了我们一个x, 让我们找到平方根。
可以利用binary search 来做,首先找到一个范围,不需要是从0 到 x。因为 sqrt(x) 一定是小于等于 x / 2 + 1的。
所以起始范围为 0 到 x / 2 + 1;
还要注意 sq = mid * mid。 这里要检查 overflow。
Java Solution:
Runtime beats 53.10%
完成日期:06/12/2017
关键词:Binary Search
关键点:检查overflow
1 class Solution 2 { 3 public int mySqrt(int x) 4 { 5 int left = 0; 6 int right = x / 2 + 1; 7 8 while(left <= right) 9 { 10 int mid = left + (right - left)/2; 11 int sq = mid * mid; 12 13 if(mid != 0 && sq / mid != mid) // check overflow 14 { 15 right = mid - 1; // meaning mid is too big, go to left part 16 continue; 17 } 18 19 if(sq == x) 20 return mid; 21 else if(sq < x) 22 left = mid + 1; 23 else 24 right = mid - 1; 25 26 } 27 28 return right; 29 } 30 }
参考资料:N/A
LeetCode 题目列表 - LeetCode Questions List
题目来源:https://leetcode.com/
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】博客园携手 AI 驱动开发工具商 Chat2DB 推出联合终身会员
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步