首页 > 其他分享 >力扣(leetcode) 69. x 的平方根 (四种方法解决,总有一种是你会的~)

力扣(leetcode) 69. x 的平方根 (四种方法解决,总有一种是你会的~)

时间:2022-10-27 20:07:58浏览次数:89  
标签:二分法 elif return mid 力扣 break print 69 leetcode


题目在这:​​https://leetcode-cn.com/problems/sqrtx/​

题目分析:

题目还是挺好理解的,就是给你一个数,问你它是由谁平方得来的。
比如给你4,2的平方等于4。所以返回2。
而8这种,在2的平方和3的平方之间,则取小的哪一个,返回2。

法一:

思路分析 :
如果仅仅是为了完成这题。可以直接投机取巧~

import math
return int(math.sqrt(x))

法二:

思路分析:
直接暴力循环找到合适的答案。
开头说到的8的答案为2的那种情况需要单独列出来。
当我们遍历到 某一个数的平方大于我们要找的数时。返回该数减一。
比如 8这个数。遍历到2的时候是4<8,遍历到3的时候是9>8。
所以返回2 。

x = 4
for i in range(1,99999):
if i * i == x:
return i

if i * i > x:
return i-1

法三:

思路分析:
使用二分法解决这道题。
有一个需要注意的点就是,当指针left和right相邻的时候,即left在right左边一个时,说明mid在中间已经取不到了,是小数。这时直接返回left的值就行了。
还有一点就是如果给的数是 0 和 1这两种情况要提前排除。

l = 1
r = x
if x == 0:
print(0)
if x == 1:
print(1)
while l<r:
mid = (l+r) // 2
if l+1 == r:
print(l)
break
elif mid ** 2 == x:
print(mid)
break
elif mid ** 2 >x:
r = mid
elif mid ** 2 <x:
l =

拿到leetcode跑的时候,记得吧print换成return然后去掉break就行了。上 面这段代码是在pycharm上测试用的,可以方便大家学习理解代码。

关于二分法,大家可以看我另一篇二分法的详解文章,保证让你很清晰。

法四:

思路分析:
使用牛顿迭代法。。。。。着法子我也不会我先去学一下回来再更


标签:二分法,elif,return,mid,力扣,break,print,69,leetcode
From: https://blog.51cto.com/u_15849381/5801735

相关文章