-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path367.py
More file actions
34 lines (32 loc) · 764 Bytes
/
367.py
File metadata and controls
34 lines (32 loc) · 764 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class Solution:
def isPerfectSquare(self, num: int) -> bool:
if num == 1:
return True
lo, hi = 1, num
while lo < hi:
mi = (lo + hi) // 2
pow2 = mi ** 2
if pow2 == num:
return True
elif pow2 < num:
lo = mi + 1
else:
hi = mi
return False
if __name__ == '__main__':
cases = [
(1, True),
(2, False),
(3, False),
(4, True),
(5, False),
(6, False),
(7, False),
(8, False),
(9, True),
]
sln = Solution()
for num, golden in cases:
res = sln.isPerfectSquare(num)
print(golden, res)
assert golden == res