タイトルLeetCodeブラシ - 1 2つの数の和

1. 2つの数の合計

件名の説明:

整数配列NUMSと目標値の目標を考えると、配列内の2つの整数の目標値を特定し、その配列の添字に戻るにお願いします。
あなたは、各入力が一つだけ答えに対応することを想定することができます。ただし、同じ配列要素を再使用することはできません。

試験例:

所与NUMS = [2、7、11 、15]、目標= 9
ためNUMS [0] + NUMS [1 ] = 2 + 7 = 9
返される[0,1]

開発:一般的な操作のリストの複雑辞書

  • 配列
操作 ビッグ-O
指数 O(1)
追記 O(1)
ポップ O(1)
ポップ(I) O(N)
挿入(I、アイテム) O(N)
O(N)
反復 O(N)
/で含まれてい O(N)
ソート O(N Nログ)
かける O(NK)
スライスを取得 OK)
デルスライス O(N)
セットのスライス O(N + K)
O(N)
CONCATENATE OK)
  • 辞書
操作 ビッグ-O
コピー O(N)
アイテムを取得します O(1)
セットアイテム O(1)
O(1)
/で含まれてい O(1)
反復 O(N)

問題解決のアイデア:

したがって、要素が別のセット(文字列、アレイ、辞書、等)、時間及び文字列配列の複雑さはO(n)は、時間計算の辞書であるか否かが判断された場合であり、アルゴリズムの設計でO(1)、我々は、データを格納する手段として、辞書を使用するようにしてください。
次のように戻る元の質問に、私たちは主のアレイにトラバースするだけ、時間の複雑さはO(n)は、具体的な実装は、次のとおりです。

class Solution:
    def twoSum(self, nums, target):
        d = {}  # d 的存放格式为 {数值 : 该数值的角标}
        for i in range(len(nums)):
            if target - nums[i] in d:
                # 跳出循环条件为当前差值存在于字典中
                return [d[target - nums[i]], i]
            d[nums[i]] = i  # 如果原数组存在相同数如 [3, 3],则将该键值更新为后一个相同数的角标
        return []

LeetCodeの営業成績:

ここに画像を挿入説明

リリース5元の記事 ウォンの賞賛0 ビュー349

おすすめ

転載: blog.csdn.net/qq_40772371/article/details/103542194