メインコンテンツへスキップ

NeetCode 150 [Binary Search]:easy

· loading · loading ·
kiitosu
著者
kiitosu
画像処理やデバイスドライバ、データ基盤構築からWebバックエンドまで、多様な領域に携わってきました。地図解析や地図アプリケーションの仕組みにも経験があり、幅広い技術を活かした開発に取り組んでいます。休日は草野球とランニングを楽しんでいます。
目次

NeetCodeのSolutionを書いていく
#

Binary Search #

昇順に並べられた整数のリストと、ターゲットの整数を与えられる。 リストに含まれるターゲットを見つけ、ある場合はそのインデックスを、ない場合は-1を返す関数を作る。

O(logn)時間で解決できる必要がある。

ソート済みだから2分探索すればいいのかな?

class Solution:
    def search(self, nums: list[int], target: int) -> int:
        def search_inner(nums: list[int], target: int) -> int:
            num = nums[len(nums) // 2]

            if num == target:
                return True

            if len(nums) == 1:
                return False

            if target < num:
                return search_inner(nums[: len(nums) // 2], target)
            return search_inner(nums[len(nums) // 2 :], target)

        return nums.index(target) if search_inner(nums, target) else -1

戻り値に期待される-1を配列が含む場合があるから、内部関数を作ってターゲットがあるか探す あった場合はそのindexを返す。ない場合は-1を返す。

Reply by Email

関連記事

NeetCode 150 [Stack]:easy
· loading · loading
NeetCode 150 [Arrays & Hashing]:easy
· loading · loading
dynamodb stream -> event bridge pipesで失敗した時にDLQにメッセージが届かない
· loading · loading