最近使用したキャッシュを設計するにはどうすればよいですか?
あなたがいくつかのアイテムを訪れたとしましょう。これらのアイテムを保持するためのデータ構造を設計する必要があります。各アイテムは、最後に訪問した時間に関連付けられています。
アイテムにアクセスするたびに、データ構造でそのアイテムを確認してください。アイテムがキャッシュにある場合は、その訪問時間を更新します。それ以外の場合は、キャッシュに挿入します。キャッシュサイズは固定されています。キャッシュサイズがいっぱいの場合は、最も古いアイテムを削除してください。
私の解決策:
マップを使用<item、visitTime>
初期化:マップをf(visitTime)で降順に並べ替えます。O(nlg n)
アイテムにアクセスした場合は、マップでO(lg n)を使用してアイテムを検索します。
マップにある場合は、時刻O(1)を更新します。マップO(lg n)を並べ替えます。
そうでない場合は、マップに挿入してから並べ替えます。O(lg n)
マップサイズ>固定サイズの場合、最後の要素O(1)を削除します。
別の解決策:
ハッシュテーブルを使用<item、visitTime>
O(n lgn)で並べ替えます。
アイテムが訪問された場合、O(1)を使用してタルブでアイテムを検索します。
テーブルにある場合は、時刻O(1)を更新します。テーブルO(n lg n)を並べ替えます。
そうでない場合は、テーブルに挿入してから並べ替えます。O(n lg n)
テーブルサイズ>固定サイズの場合、最後の要素O(1)を削除します。
より良い解決策はありますか?の上) ?