Day9-Valid Perfect Square
问题描述:
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
解法一:
由于题目中说了是个正整数,所以他的平方根一定在0-num之间,暴力解法就是遍历一遍这之间的数,结果表示超时了,不能通过。
class Solution:
def isPerfectSquare(self, num: int) -> bool:
for i in range(num + 1):
if i * i == num:
return True
return False
时间复杂度为O(n),空间复杂度为O(1).
解法二:
可以用二分搜索的方式降低搜索的时间复杂度。
class Solution:
def isPerfectSquare(self, num: int) -> bool:
start ,end = 0,num
while start <= end:
mid = (start + end) // 2
print(start,end,mid)
if mid * mid == num:
return True
elif mid * mid < num:
start = mid + 1
else:
end = mid - 1
return False