タイトル:
昇順の整数配列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
結果を返す