은 바이너리 서치이다. 예전에 내 코드를 보면 l, r 혹은 low high 그리고 피봇은 mid로 해놨던데,
left, right로 풀 변수명을 적어주고, mid라는 중의적인 느낌의 변수명 대신 알고리즘에서 의도한대로 pivot으로 적는것이 훨씬 깔끔한 듯 하다. left, right의 비교는 같거나 작을때까지로 설정해주고, 피봇값이 타겟보다 크면 right를 피봇의 바로 왼쪽으로 옮겨주고, 나머지 경우에는 pivot 의 오른쪽으로 올겨준다.
class Solution:
def search(self, nums: List[int], target: int) -> int:
left, right = 0, len(nums) - 1
while left <= right:
pivot = left + (right - left) // 2
if nums[pivot] == target:
return pivot
if target < nums[pivot]:
right = pivot - 1
else:
left = pivot + 1
return -1