1. 程式人生 > >69. x的平方根

69. x的平方根

Problem

實現 int sqrt(int x) 函式。

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

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

示例 1:

輸入: 4
輸出: 2
示例 2:

輸入: 8
輸出: 2
說明: 8 的平方根是 2.82842…,
由於返回型別是整數,小數部分將被捨去。

too young 思路

我能想到的就是遍歷了,平方不超過的最大整數。。
倒是跑通了
輸入:2147395599
報錯:MemoryError

dalao思路-40ms

二分查詢 binary search

class
Solution(object): def mySqrt(self, x): if x == 0: return 0 left = 0 right = x while True: mid = left + (right-left)/2 if (mid * mid > x): right = mid - 1 else: if (mid+1) * (mid+
1) > x: return mid left = mid + 1

巨佬預警-28ms

利用了牛頓迭代法,看了很久終於看懂了

參考教程:https://matongxue.com/madocs/205.html
推導如下
在這裡插入圖片描述

class Solution(object):
    def mySqrt(self, x):
        r = x
        while r * r > x:
            r = (r + x/r)/2
        
        return
r