130-131/300
x 的平方根
- x 的平方根
实现 int sqrt(int x) 函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例 1:
输入: 4
输出: 2
示例 2:
输入: 8
输出: 2
说明: 8 的平方根是 2.82842…,
由于返回类型是整数,小数部分将被舍去。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sqrtx
思路:二分查找
如图:
class Solution(object):
def mySqrt(self, x):
l, r = 1, x
while l < r:
mid = (l + r)//2
if x >= mid * mid:
l = mid + 1 #+1 防止死循环
else:
r = mid
return 1 if x == 1 else l-1
class Solution:
def mySqrt(self, x: int) -> int:
r = x
while r*r > x:
r = (r + x/r) // 2
return int(r)
有效的完全平方数
- 有效的完全平方数
给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。
&nsbp;
说明:不要使用任何内置的库函数,如 sqrt。
&nsbp;
示例 1:
&nsbp;
输入:16
输出:True
&nsbp;
示例 2:
&nsbp;
输入:14
输出:False
&nsbp;
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-perfect-square
class Solution:
def isPerfectSquare(self, num: int) -> bool:
l, r = 1, num
while l < r:
mid = (l+r)//2
if mid * mid > num:
r = mid
else:
l = mid + 1
return True if num == 1 else num == (l-1)*(l-1)