Description
- Valid Perfect Square Easy
Given a positive integer num, write a function which returns True if num is a perfect square else False.
Note: Do not use any built-in library function such as sqrt.
Example
-
Example 1:
Input: 16
Output: true -
Example 2:
Input: 14
Output: false
题意
判断一正整数是否是完全数(某数的平方值等于该数),是则返回True,否则返回False.
要求不能用内置函数sqrt()
思路1 二分法
这题跟求开方类似,我的做法是在求开方的基础上再验算一遍。
code
class Solution:
def isPerfectSquare(self, num: int) -> bool:
if num<=1:
return True
left,right = 0, num
while left < right:
mid = left + (right - left)//2
if mid * mid <= num and (mid + 1) * (mid+1) > num:
break
elif mid * mid > num:
right = mid
else:
left = mid + 1
if mid * mid == num:
return True
else:
return False
思路2 牛顿迭代法
类似做法直接加了验算
code
class Solution:
def isPerfectSquare(self, num: int) -> bool:
if num<=1:
return True
x =num
while True:
temp = x
x = (x + num / x ) / 2
if abs(x - temp) < 1:
break
if x*x == num:
return True
else:
return False