You are given a positive integer num, return true if num is a perfect square or false otherwise.
A perfect square is an integer that is the square of an integer. In other words, it is the product of some integer with itself.
You must not use any built-in library function, such as sqrt.
Example 1:
Input: num = 16
Output: trueExplanation: We return true because 4 * 4 = 16 and 4 is an integer.
Example 2:
Input: n = 15
Output: falseExplanation: We return false because square root of 15 is not an integer.
Constraints:1 <= n <= ((2^31) - 1)
class Solution:
def isPerfectSquare(self, num: int) -> bool:
for i in range(1, num + 1):
sq = i * i
if sq > num:
return False
if sq == num:
return Trueclass Solution:
def isPerfectSquare(self, num: int) -> bool:
sqRoot = int(sqrt(num))
return sqRoot * sqRoot == numclass Solution:
def isPerfectSquare(self, num: int) -> bool:
l, r = 1, num
while l <= r:
m = l + (r - l) // 2
sq = m * m
if sq > num:
r = m - 1
elif sq < num:
l = m + 1
else:
return True
return Falseclass Solution:
def isPerfectSquare(self, num: int) -> bool:
i = 1
while num > 0:
num -= i
i += 2
return num == 0class Solution:
def isPerfectSquare(self, num: int) -> bool:
r = num
while r * r > num:
r = (r + (num // r)) // 2
return r * r == numclass Solution:
def isPerfectSquare(self, num: int) -> bool:
r, mask = 0, 1 << 15
while mask > 0:
r |= mask
if r > (num // r):
r ^= mask
mask >>= 1
return r * r == num