【JS】 求x 的平方根 #數學 #二分查詢
阿新 • • 發佈:2018-11-21
實現 int sqrt(int x) 函式。
計算並返回 x 的平方根,其中 x 是非負整數。
由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。
示例 1:
輸入: 4
輸出: 2
示例 2:
輸入: 8
輸出: 2
說明: 8 的平方根是 2.82842…, 由於返回型別是整數,小數部分將被捨去。
解法一:
使用二分查詢,取左右兩個數的中間值作為遊標去尋找最接近的平方根數,當左邊的數大於右邊的數時,返回右邊的數減1當有小數點的話向下取整
// 2018/11/18 上午 var mySqrt = function(x) { var lo=0,hi=x,mid; while(lo<=hi){ mid=Math.ceil((lo+hi)/2) // console.log(lo,hi,mid,mid*mid) if(mid*mid==x) return mid; if(mid*mid<x){ lo=mid+1 }else{ hi=mid-1; } } return Math.floor(hi); };
1017 / 1017 個通過測試用例
執行用時:96 ms
解法二:
從1開始累加找平方根,當大於目標值的時候,就返回當前數減1
var mySqrt = function(x) { var square,status=0; for(var i=1;i<=x/i;i++){ square=i*i if(square==x) return i; if(status==0 && square*square<x){ i=i*i;continue; } status=1; } return i<1? 0:i-1; };
1017 / 1017 個通過測試用例
執行用時:164 ms