367. Valid Perfect Square
def isPerfectSquare(self, num):
"""
:type num: int
:rtype: bool
"""
x = num
while x * x > num:
x = (x + num / x) / 2
return x * x == num
def isPerfectSquare(self, num):
"""
:type num: int
:rtype: bool
"""
if num < 0: return False
l, r = 0, num
while l <= r:
m = l + (r - l) / 2
if m * m == num:
return True
elif m * m < num:
l = m + 1
else:
r = m - 1
return False