LeetCode 704. Binary Search

개발공부를해보자·2025년 2월 25일

LeetCode

목록 보기
65/95

파이썬 알고리즘 인터뷰 65번(리트코드 704) Binary Search
https://leetcode.com/problems/binary-search/

나의 풀이

class Solution:
    def search(self, nums: List[int], target: int) -> int:
        left, right = 0, len(nums) - 1
        while left <= right:
            mid = left + (right - left) // 2
            if nums[mid] == target:
                return mid
            elif nums[mid] < target:
                left = mid + 1
            else:
                right = mid - 1
        return -1

다른 풀이1(Recursive, 재귀)

class Solution:
    def search(self, nums: List[int], target: int) -> int:
        def binary_search(left, right):
            if left > right:
                return -1
            mid = left + (right - left) // 2
            if nums[mid] < target:
                return binary_search(mid + 1, right)
            elif nums[mid] > target:
                return binary_search(left, mid - 1)
            else:
                return mid
        return binary_search(0, len(nums) - 1)

다른 풀이2(bisect 모듈 이용)

class Solution:
    def search(self, nums: List[int], target: int) -> int:
        index = bisect.bisect_left(nums, target)
        if index < len(nums) and nums[index] == target:
            return index
        else:
            return -1
        # bisect 모듈에 대해 정리해보자

다른 풀이3

class Solution:
    def search(self, nums: List[int], target: int) -> int:
        try:
            return nums.index(target)
        except ValueError:
            return -1
        
        # try except 문 정리하자.
profile
개발 공부하는 30대 비전공자 직장인

0개의 댓글