一、題目
實現int sqrt(int x)
函式。
計算並返回 x 的平方根,其中 x 是非負整數。
由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。
示例 1:
輸入:4輸出:2示例 2:
輸入:8輸出:2說明:8 的平方根是 2.82842...,二、思路由於返回型別是整數,小數部分將被捨去。
採用二分查詢的思想,每次把劃分區間分為3部分[0,mid),mid,(mid,end],從而不斷縮小空間,這裡和傳統的二分查詢不太一樣,如果按照如下所寫的**會出現下圖的情況:
在迴圈過程中會出現下次迴圈的範圍不包含正確答案的情況,雖然最後能返回正確答案,但是這種二分迭代的情況不利於我們思考,對於這種特殊的情況我們記住程式就好了。如下圖所示:如果輸入15,正確答案返回3,其中某一次迴圈中出現的情況:
第一次:start=0,mid=7,end=15
第二次:start=0,mid=3,end=6
以第二次為例,這是情況如下:
由於3^3=9<15,所以第三次會在[4,6]中尋找答案,繼續
第三次:start=4,mid=5,end=6
第四次:start=4,mid=4,end=4
第四次還是不滿足條件,這是end=mid-1=3,剛好是正確答案。。。
所以這種解法比較巧,記住就好了。
三、**
public class leetcode69
public static int mysqrt(int x)
return end;}}
四、總結 69 x的平方根
題目描述 實現int sqrt int x 函式。計算並返回x的平方根,其中x 是非負整數。由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。示例 1 輸入 4 輸出 2 示例 2 輸入 8 輸出 2 說明 8 的平方根是 2.82842 由於返回型別是整數,小數部分將被捨去。知識點 二分...
69 X的平方根
題目 實現 int sqrt int x 函式。計算並返回 x 的平方根,其中 x 是非負整數。由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。示例 1 輸入 4 輸出 2 示例 2 輸入 8 輸出 2 說明 8 的平方根是 2.82842.由於返回型別是整數,小數部分將被捨去。思路 每...
69 x 的平方根
實現 int sqrt int x 函式。計算並返回 x 的平方根,其中 x 是非負整數。由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。示例 1 輸入 4 輸出 2 示例 2 輸入 8 輸出 2 說明 8 的平方根是 2.82842.由於返回型別是整數,小數部分將被捨去。class s...