통과는 하지만, 쫌 오래 걸림
class Solution:
def mySqrt(self, x: int) -> int:
i = 0
while(i>=0):
if (i*i == x):
return i
elif (i*i > x):
break
i+=1
return i-1
https://youtu.be/zdMhGxRWutQ?si=DRszQKJf3yNpiTyt
바이너리 써치로..
class Solution:
def mySqrt(self, x: int) -> int:
# 바이너리 써치로. 이진 탐색
l, r = 0, x
res = 0
while l<=r:
# mid = (l+r) // 2 <-- 이거는 오버플로어 될수도 있다고 함
mid = (l + (r-l) //2)
if mid**2 == x:
return mid
elif mid**2 < x: # 오른쪽으로
l = mid +1
res = mid # 가능성 있는 값을 업데이트
else:
r = mid -1
# r < l 인 상태니깐
# l 은 아마도 넘어가는 범위일듯
# return r 해도 맞음
return res
'LeetCode > Top Interview 150' 카테고리의 다른 글
149. Max Points on a Line (4) | 2024.12.23 |
---|---|
50. Pow(x, n) (0) | 2024.12.22 |
373. Find K Pairs with Smallest Sums (0) | 2024.12.22 |
502. IPO (0) | 2024.12.22 |
BST: 153. Find Minimum in Rotated Sorted Array ★ (0) | 2024.12.21 |