本人使用環境Python3+Pycharm。最近恢復刷題,持續更新,能點讚的點點贊,抱拳了。想要啥題號自己搜一下沒有去我別的文章中搜,我目前的規劃就是先刷數論,邊刷編寫哈~(我是刷完了但是寫文章花時間呀,不要噴我噻)
目前涉及的題目編號:69
找題就複製這個,親測好用:【你要查找的題號】
【69】x的平方根
題目要求:計算並返回 x 的平方根,其中 x 是非負整數。由於返回類型是整數,結果只保留整數的部分,小數部分將被捨去。
題目分析:題目太簡單了沒有什麼值得寫的。我工程代碼出身,我第一反應就是如下的代碼:
def mySqrt(self, x: int) -> int:
return round(math.floor(math.sqrt(x)))
但是這個題的本意肯定不是這樣的哈,下面用的是袖珍計算器算法,什麼是袖珍計算器算法,其實實質上就是根號不好表達,將其換成指數和對數的形式,代碼如下:
def mySqrt(self, x: int) -> int:
if x < 2 :
return x
left = int(e**(0.5*log(x)))
right = left + 1
if right * right > x:
return left
else:
return right
此題還可以用二分法的思想去搞它,代碼如下:
def mySqrt(self, x: int) -> int:
if x <= 2:
return x
left, right = 2, x // 2
while left <= right:
guess_digit = left + (right - left) // 2
num = guess_digit ** 2
if num > x:
right = guess_digit -1
elif num < x:
left = guess_digit
else:
return guess_digit
return right