leetcood學習筆記-69-x的平方根
阿新 • • 發佈:2019-03-13
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 iView Code
方法二:牛頓叠代法(最優解)(泰勒展開式)
class Solution: defView CodemySqrt(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)
其他方法;
class Solution: def mySqrt(self, x):View Code‘‘‘ :type x: int :rtype: int ‘‘‘ num_sqrt = x ** 0.5 x_str = str(num_sqrt) result = x_str.split(‘.‘, 1) return int(result[0])
方法三:二分法
class Solution { public int mySqrt(int x) { int max[] = {0};View Codeif (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]; } }
詳解見: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的平方根