力扣解題思路 69 x 的平方根

2021-10-17 03:47:24 字數 895 閱讀 1411

思路:

首先最簡單的暴力法:

public

intmysqrt

(int x)

return

(int

)i-1

;}

然後就是二分法了,我第一版本是這樣的:

public

intmysqrt

(int x)

else

}return left;

}

但是這樣出現了死迴圈,例如測試用例4,mid最後會和left相等並且一直停留在2,right會一直在3,所以無法退出迴圈。問題就出在mid已經等於正確答案的時候沒有退出迴圈,所以多加乙個相等時的判斷就好啦。另外,針對特殊測試用例,例如 2147395599 要把搜尋的範圍設定成長整型:

public

intmysqrt

(int x)

else

if(mid*mid == x)

else

}return

(int

)left;

}

但是還是錯了?,連測試用例1都過不了,因為left和mid卡在0,right卡在1,都無法更新,但正確答案是1卻一直達不到,所以這裡mid一定取右中位數,如果取左中位數,**會進入死迴圈

public

intmysqrt

(int x)

else

}return

(int

)left;

}

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.由於返回型別是整數,小數部分將被捨去。思路 每...