Menu
CoddyTech

Binary Search

やさしい二分探索python iconjava iconcpp iconc iconjs icon+10

整数のリスト nums が昇順に並べられて与えられます。値の重複はありません。また、整数 target が与えられます。target が nums に含まれている場合は、0から数えたインデックスを返し、含まれていない場合は -1 を返してください。O(log n) 時間を目指してください。つまり、すべての要素を調べる余裕はありません。

関数

search(nums: integer-array, target: integer) → integer
numsinteger-array
重複のない整数のソート済みリスト
targetinteger
探す値
戻り値integer
nums 内の target のインデックス。見つからない場合は -1

制約

  • 1 ≤ nums.length ≤ 104
  • -104 ≤ nums[i], target ≤ 104
  • nums は厳密な昇順に並んでいるため、各値は一度だけ現れます。

例

入力
nums = [-7, -2, 0, 4, 9, 15, 23]target = 9
出力
4
説明
nums[4]は9です。検索では、まずインデックス3(値は4、小さすぎる)を調べ、次にインデックス5(値は15、大きすぎる)を調べ、その後インデックス4を調べて9を見つけます。

lock icon提出時に隠しテスト+15件

challenge icon

発展問題

もしnumsに重複した値が含まれる可能性がある場合でも、O(log n)のままtargetの最初のインデックスを返すにはどうすればよいでしょうか?

コードをリセット
def search(nums, target):
    # ここにコードを書いてください
テストケース

ケース1

ケース2

入力

nums = [-7, -2, 0, 4, 9, 15, 23]
target = 9

期待値

4