Leetcode演習(Python):配列クラス:質問34:昇順で配列された整数配列numsとターゲット値targetが与えられます。配列内の指定されたターゲット値の開始位置と終了位置を見つけます。アルゴリズムの時間の複雑さはO(log n)レベルでなければなりません。ターゲット値が配列に存在しない場合は、[-1、-1]を返します。

タイトル:

昇順の整数配列numsとターゲット値targetを指定します。配列内の指定されたターゲット値の開始位置と終了位置を見つけます。

アルゴリズムの時間の複雑さはO(log n)レベルでなければなりません。

ターゲット値が配列に存在しない場合は、[-1、-1]を返します。

アイデア:二分法、ポインタを使用して番号の最初と最後を見つけます

手順:

クラスSolution:
    def searchRange(self、nums:List [int]、target:int)-> List [int]:
        結果= [-1、-1]
        長さ= len(nums)
        頭= 0
        尾=長さ-1
        一方、頭<尾:
            真ん中=(頭+尾)// 2
            ターゲット> nums [中央]の場合:
                頭=中央+ 1
            そうしないと:
                テール=ミドル
        if nums [head]!= target:
            結果を返す
        結果[0] =頭
        尾=長さ-1
        一方、頭<=尾:
            真ん中=(頭+尾)// 2
            ターゲット> = nums [中央]の場合:
                頭=中央+ 1
            そうしないと:
                右=真ん中
        結果[1] =頭-1
        結果を返す

おすすめ

転載: www.cnblogs.com/zhuozige/p/12725938.html