题目来源:
leetcode题目,网址:LCR 072. x 的平方根 - 力扣(LeetCode)
解题思路:
二分查找即可。
解题代码:
- class Solution {
- public int mySqrt(int x) {
- long left=0;
- long right=x;
- while(left<=right){
- long mid=left+(right-left)/2;
- if(mid*mid<=x){
- if((mid+1)*(mid+1)>x){
- return (int)mid;
- }else{
- left=mid+1;
- }
- }else{
- right=mid-1;
- }
- }
- return -1;
- }
- }
总结:
注意计算乘积时可能会溢出。
官方题解给出了三种解法。第一种是通过数学方法讲平方根转化为对数与指数计算。第二种是二分查找。第三种是牛顿迭代法。