704. Binary Search
これは,targetなどの数字に対応するインデックスを配列中で検索して出力する問題である.
問題ではO(logn)アルゴリズムの使用が明確に要求されている.
class Solution:
def search(self, nums: List[int], target: int) -> int:
for i in range(len(nums)):
if target not in nums:
return -1
elif nums[i] == target:
return i
最初はO(log n)が何なのか分からなかったのでそうしましたがタイムアウト.本当にダメだと思い、質問を読み直してO(logn)を検索しましたが、
これはアルゴリズムで、中間値を指定し、対は出力し、小さいか大きいかは範囲を縮小し、出力値を探します.
しかし、どうすればいいか分からないので、いくつかのソリューションを見て、それに従って、細部ごとに運行時間を変えました.
最速のコード
class Solution:
def search(self, nums: List[int], target: int) -> int:
l, r = 0, len(nums)-1
while l <= r:
m = int((l+r)//2)
if nums[m] == target:
return m
elif nums[m] <= target:
l = m+1
else:
r = m-1
return -1
文字数やスペースなどの速度もずいぶん変わりました.最も重要な時間短縮の原因はm上のintである.
整数であることを事前に指定して時間を短縮するかどうか...不思議
Reference
この問題について(704. Binary Search), 我々は、より多くの情報をここで見つけました https://velog.io/@chss3339/704.-Binary-Searchテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol