1. 程式人生 > >leetcood學習筆記-69-x的平方根

leetcood學習筆記-69-x的平方根

def cli 平方根 font view -a src eve targe

題目描述:

技術分享圖片

第一次提交:(會超時)

技術分享圖片
class Solution:
    def mySqrt(self, x: int) -> int:
        if x==0 or x==1:
            return x
        for i in range(1,x):
            if i*i<=x and (i+1)**2>x:
                return i
View Code

方法二:牛頓叠代法(最優解)(泰勒展開式)

技術分享圖片
class Solution:
    def
mySqrt(self, x): """ :type x: int :rtype: int """ if x <= 1: return x r = x while r > x / r: r = (r + x / r) // 2 return int(r)
View Code

其他方法;

技術分享圖片
class Solution:
    def mySqrt(self, x):
        
‘‘‘ :type x: int :rtype: int ‘‘‘ num_sqrt = x ** 0.5 x_str = str(num_sqrt) result = x_str.split(., 1) return int(result[0])
View Code

方法三:二分法

技術分享圖片
class Solution {
    public int mySqrt(int x) {
         int max[] = {0};
         
if (x==1) { return 1; } if(46340*46340<=x ){ return 46340; } for (int i = 0; i <= x/2; i++) { if (i*i<=x) { max[0]=i; } else { break; } } return max[0]; } }
View Code

詳解見:https://blog.csdn.net/sgs595595/article/details/85940224

python中的>>:

>> 和 <<都是位運算,對二進制數進行移位操作。
<< 是左移,末位補0,類比十進制數在末尾添0相當於原數乘以10,x<<1是將x的二進制表示左移一位,相當於原數x乘2。比如整數4在二進制下是100,4<<1左移1位變成1000(二進制),結果是8。
>>是右移,右移1位相當於除以2。
而>>=和<<=,就是對變量進行位運算移位之後的結果再賦值給原來的變量,可以類比賦值運算符+=和-=可以理解。
比如x>>=2, 就是把變量x右移2位,再保留x操作後的值。

leetcood學習筆記-69-x的平方根