69 x的平方根

2021-08-24 17:56:06 字數 1129 閱讀 8544

一、題目

實現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...