x 的平方根 二分查詢

2022-06-02 22:51:09 字數 962 閱讀 5542

實現int sqrt(int x)函式。

計算並返回 x 的平方根,其中 x 是非負整數。

由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。

示例 1:

輸入: 4

輸出:

2

示例 2:

輸入: 8

輸出:

2說明:

8 的平方根是 2.82842

...,

由於返回型別是整數,小數部分將被捨去。

二分查詢法應用於搜尋平方根的思想很簡單,其實就是「猜」,但是是有策略的「猜」,用「排除法」在有限的區間裡,一次排除一半的區間元素,最後只剩下乙個數,這個數就是題目要求的向下取整的平方根整數。

牛頓法最初提出的時候,是用於求解方程的根,它的基本思想是「以直代曲」,在迭代中搜尋得到方程的近似解

使用二分法搜尋平方根的思想很簡單,就類似於小時候我們看的電視節目中的「猜**」遊戲,高了就往低了猜,低了就往高了猜,範圍越來越小。因此,使用二分法猜算術平方根就很自然。

乙個數的平方根肯定不會超過它自己,不過直覺還告訴我們,乙個數的平方根最多不會超過它的一半,例如 88 的平方根,8的一半是4,4^2 = 16 > 8,如果這個數越大越是如此,因此我們要計算一下,這個邊界是多少,不等式如下

(a/2)^2 >= a 

意即:如果乙個數的一半的平方大於它自己,那麼這個數的取值範圍

public

int mysqrt(int

x)

long left = 1

;

long right = x / 2

;

while (left else

}//因為一定存在,因此無需後處理

return (int

) left;

}

求x 的平方根 二分查詢

題目 實現 int sqrt int x 函式。實現 int sqrt int x 函式。計算並返回 x 的平方根,其中 x 是非負整數。由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。思路 因為x是非負整數,那麼當x是0的時候平方根為0,x為1時平方根為1,只有當x大於1時才需要計算因...

二分搜尋小結 x的平方根

二分查詢法作為一種常見的查詢方法,將原本是線性時間提公升到了對數時間範圍,大大縮短了搜尋時間,具有很大的應用場景,而在leetcode中,要運用二分搜尋法來解的題目也有很多,但是實際上二分查詢法的查詢目標有很多種,而且在細節寫法也有一些變化。第一類 需查詢和目標值完全相等的數 這是最簡單的一類,也是...

Leetcode 二分查詢 69 x 的平方根

實現 int sqrt int x 函式。計算並返回 x 的平方根,其中 x 是非負整數。由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。示例 1 輸入 4 輸出 2 示例 2 輸入 8 輸出 2 說明 8 的平方根是 2.82842.由於返回型別是整數,小數部分將被捨去。這道題的看到之...