367. Valid Perfect Square
2021. 11. 12. 10:55ㆍLeetcode
Description:
Given a positive integer num, write a function which returns True if num is a perfect square else False.
Follow up: Do not use any built-in library function such as sqrt.

'''
[1] brute force)
code::
def isPerfectSqurare(num):
for i in range(1,num):
if i*i==num:
return True
elif i*i>num: # optimization
break
return False
-T/C: O(n)
-S/C: O(1)
'''
'''
[2] brute force - optimization)
code::
def isPerfectSquare(self, num: int) -> bool:
i=1
while i*i<=num:
if i*i==num:
return True
else:
i+=1
return False
-T/C: O(n^(1/2))
-S/C: O(1)
'''
'''
[3] binary search)
code::
def isPerfectSquare(self, num: int) -> bool:
left,right=1,num
while left<=right:
mid=(left+right)//2
if mid*mid==num:
return True
elif mid*mid>num:
right=mid-1
else:
left=mid+1
return False
-T/C: O(logn)
-S/C: O(1)
'''
class Solution:
def isPerfectSquare(self, num: int) -> bool:
left,right=1,num
while left<=right:
mid=(left+right)//2
if mid*mid==num:
return True
elif mid*mid>num:
right=mid-1
else:
left=mid+1
return False'Leetcode' 카테고리의 다른 글
| 143. Reorder List (0) | 2021.11.12 |
|---|---|
| 19. Remove Nth Node From End of List (0) | 2021.11.12 |
| 203. Remove Linked List Elements (0) | 2021.11.12 |
| 1413. Minimum Value to Get Positive Step by Step Sum (0) | 2021.11.11 |
| 23. Merge k Sorted Lists (0) | 2021.11.10 |