mplement int sqrt(int x)
.
Compute and return the square root of x.
題目就是要實現平方根的功能,但是要注意!!!當輸入的數字不是完全平方數的時候需要返回距離它最下的完全平方數的平方根比如當爲7的時候,返回2
改了好幾遍代碼,注意了要把輸入的數字變成long
最後成功的是因爲改了跳出循環的判斷,跳出循環是因爲left>right且input肯定不是完全平方,而我們不確定此時mid的平方比輸入是大還是小,所以又分類討論了一次
public class Solution {
public int mySqrt(int x) {
long xlong = (long)x;
long left = 0;
long right = x/2;
long mid = 0;
if(x==0||x==1) return x;
while(left<=right){
mid=left+(right-left)/2;
if(mid*mid>xlong) right=mid-1;
else if(mid*mid<xlong) left=mid+1;
else if(mid*mid==xlong) return (int)mid;
else break;
}
if(mid*mid>xlong) return (int)(mid-1);
else return (int)mid;
}
}