アルゴリズムとデータ構造の学習を始めたばかりで、興味深い問題が発生しました。
私はこの問題を解決するためにいくつかの助けが必要です。各要素を読み取らずにデータセットからデータを検索
私に与えられたデータセットがあります。データセット内には、文字とそのそれぞれに関連付けられた番号があります。私は現在の文字のそれぞれに関連する最大の数字の合計を評価しなければならない。リストは文字でソートされませんが、各文字のグループは、データセット内のその文字のインスタンスがなくなって繰り返されます。
さらに、データセット内の各文字に関連付けられた最大数は、データセット内のその文字の参照の最大位置に常に表示されます。データセット全体の長さを知り、そのデータセットに関連付けられた行番号を指定してデータを取得することができます。
たとえば、
C-7
C-9
C-12
D-1
D-8
A-3
M-67
M-78
M-90
M-91
M-92
K-4
K-7
K-10
L-13
length=15
get(3)= D-1(stores in class with character D and value 1)
彼らはそれぞれL,K,M,A,D,C
に関連付けられている最高の数値であるとして、上記のための答えは13+10+92+3+8+12
でなければなりません。
最も簡単な解決策はもちろん、すべての要素を調べることですが、最も効率的なアルゴリズム(データセットの長さよりも短いデータセットを読み取ること)は何ですか?
真のキーは何かわかりませんが、キーはデータ内で繰り返されません。さらに、キーの最大位置にキーに関連付けられた最大値が含まれているという事実を利用することはできません。可能な限り少ない数の検索で解決策を見つけることが問題になるので、すべてを読むだけではなく、より効率的な方法がありますか? – user77108
例に繰り返しキーがあります。 最も効率的なアルゴリズムは、与えられていない変数に依存します。鍵は何になるでしょうか?彼らはいつも完全なセットですか?ソリューションがこのデータセットまたは汎用データセットに最適であるべきか? あなたはデータがソートされていないと言いました。最高のソートアルゴリズムは少なくともログオン時間を要しますが、大きなOは高くなります。だから、時間を節約するためにまず物事を並べ替えることができます。 特定のキーの最高値(D)を必要とする場合は、任意のDをバイナリ検索し、最後のDをローカライズ検索できます。lastIndexOfのいくつかの藻類をチェックアウトします。 – Bricky