Python 二項対立型ルックアップのサンプルコード
2022-01-26 13:08:06
検索する要素が多い場合、2分法ルックアップは単純ルックアップよりも高速です。これは2分法ルックアップアルゴリズムの利点ですが、2分法アルゴリズムには欠点もあります。2分法アルゴリズムは順序付きリストのみなので、挿入と削除が非常に困難になります。
<スパン 二分探索は、配列の全要素を探さないという重要な特徴があり、探すデータ量は実際には要素の対数と一致し、通常は毎回半分ずつ減っていく。ですから、二分探索の時間計算量はO(log2n)であることに間違いはありません。もちろん、最良の場合は一度だけ探すことになりますが、最悪かつ一般的な場合は、確かに逐次探索よりはるかに優れています。
質問1:n個の要素を持つ順序付き(昇順)整数配列numsとターゲットが与えられたとき、numsからターゲットを探し、ターゲットが存在すれば添え字を返し、そうでなければ-1を返す関数を書きなさい。
class Solution:
def search(self,nums:List[int],target:int)->int:
left=0
right=len(nums)-1
while(left<=right):
mid=(left+right)//2
if nums[mid]==target:
return mid
if nums[mid]<target:
left=mid+1
else:
right=mid-1
return -1
問2 厳密に減少する配列において、目標値targetより大きい2番目の数値の添え字を求めよ。存在しない場合は-1を返す。
class Solution:
def search(self,nums:List[int],target:int)->int:
left=0
right=len(nums)-1
while(left<=right):
mid=(left+right)//2
if nums[mid]==target:
return mid
if nums[mid]>target:
left=mid+1
else:
right=mid-1
return -1
質問3:この関数は2つの数値の添え字を長さ2の整数の配列として返す必要があります。数値の添え字は1から数えるので、答えの配列は1 <= answer[0] < answer[1] <= numbers.length を満たす必要があります。各入力は一意な答えにのみ対応し、同じ要素を再利用することはできないと仮定することができる。
class Solution:
def twoSum(self, numbers: List[int], target: int) -> List[int]:
for i in range(len(numbers)-1):
left=i
right=len(numbers) - 1
while(left<=right):
mid=(left+right)//2
if numbers[mid]+numbers[i]==target:
return [i+1,mid+1]
elif numbers[mid]+numbers[i]<target:
left=mid+1
else:
right = mid-1
return [-1,-1]
概要
python dichotomous lookupの記事はこれで終わりです。もっと関連するpython dichotomous lookupのコンテンツは、Script Houseの過去の記事を検索するか、以下の関連記事を引き続き閲覧してください!今後ともScript Houseをよろしくお願いします。
関連
-
PythonによるLeNetネットワークモデルの学習と予測
-
[解決済み】TypeError: 非NDFrameオブジェクトを連結することができない
-
[解決済み] Pythonのmatplotlibで'backend'を設定するにはどうしたらいいですか?
-
[解決済み] django:django.core.exceptions.AppRegistryNotReady: アプリはまだロードされていません
-
[解決済み] matplotlib.mlab.normpdf()の正しい使い方は?
-
[解決済み] 0b1100010のバイトの先頭の "0b "は何を意味しているのですか?
-
[解決済み] Pythonで同義語/単語列と結合する
-
python install psycopg2 error 'Error: pg_config executable not found' (エラー: pg_config 実行ファイルが見つかりません。
-
ModuleNotFoundErrorについて。urllib3' という名前のモジュールはありません。
-
は1~2の位置引数を取りますが、3が与えられました。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】plt.close()とplt.clf()の違いについて)
-
[解決済み] オフセットロールフォワードと月オフセット追加後のパンダの境界外ナノ秒のタイムスタンプ
-
[解決済み] ValueError: 解凍するために0個以上の値が必要(pythonのリスト)
-
[解決済み] Python 3: 挿入ソート比較カウンタ
-
[解決済み] _csv.reader' オブジェクトは添え字を付けることができません。
-
[解決済み] djangoのフォームにチェックボックスを挿入する方法
-
[解決済み] 正規表現で重複するマッチを見つけるには?
-
[解決済み] エラーです。pip に一致するディストリビューションは見つかりませんでした
-
[解決済み] pyQtのUIをpythonに変換する
-
pipのpythonバージョン10.1では、Could not install packages due to anEnvironmentErrorというエラーが発生します。[WinError 5] アクセスが拒否されました。