質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

1回答

1064閲覧

hashmapの実装でなぜリストを利用しているのか

sequelanonymous

総合スコア123

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

1クリップ

投稿2021/08/18 12:26

leetcodeの706. Design HashMapという問題を解いていて下記の正解例をみつけました。

この箇所でリストをつくって、その中にputメソッドでkeyを指定してvalueをいれているとおもうんですが、なぜリストにいれられるのかが理解できずにいます。
もしかしたら私の基本的な理解の知識不足かもしれませんので、どなたかお気づきの点ありましたらご指摘いただけますでしょうか?

self.data = [None] * 1000000

正解例

python

1class MyHashMap: 2 3 def __init__(self): 4 """ 5 Initialize your data structure here. 6 """ 7 self.data = [] 8 self.data = [None] * 1000000 9 10 11 def put(self, key: int, value: int) -> None: 12 """ 13 value will always be non-negative. 14 """ 15 self.data[key] = value 16 17 def get(self, key: int) -> int: 18 """ 19 Returns the value to which the specified key is mapped, or -1 if this map contains no mapping for the key 20 """ 21 if self.data[key] is None: 22 return -1 23 else: 24 return self.data[key] 25 26 27 28 def remove(self, key: int) -> None: 29 """ 30 Removes the mapping of the specified value key if this map contains a mapping for the key 31 """ 32 self.data[key] = None

念の為自分でも確認してみましたができません。

python

1In [429]: data = [None] * 1000000 2 3In [430]: type(data) 4Out[430]: list 5 6In [431]: data["key"] = "value" 7--------------------------------------------------------------------------- 8TypeError Traceback (most recent call last) 9<ipython-input-431-9eec82b7af50> in <module> 10----> 1 data["key"] = "value" 11 12TypeError: list indices must be integers or slices, not str 13 14In [432]:

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

この問題においては、keyが整数固定だからでしょう。

  • void put(int key, int value) inserts a (key, value) pair into the HashMap. If the key already exists in the map, update the corresponding value.
  • int get(int key) returns the value to which the specified key is mapped, or -1 if this map contains no mapping for the key.
  • void remove(key) removes the key and its corresponding value if the map contains the mapping for the key.

[中略]

Constraints:

0 <= key, value <= 10^6


ハッシュ化可能な任意の型をkeyに取りたいならば、
リストに値を格納する際に/取り出す際に/削除する際に事前にハッシュ値を取るようにします。

ただしハッシュ値が衝突した際の処理は別途考えないといけません。

投稿2021/08/18 13:05

編集2021/08/18 13:59
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sequelanonymous

2021/08/18 14:00

すみません、整数固定なのとリストにいれられる理由ではどんな関係があるのでしょうか?
LouiS0616

2021/08/18 14:03

data[10] = "value" は実行できますよね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問