私はreqを登録するために使用されるapiを持っています。それぞれのreqは、ある量のショップで販売されています。 ex。
販売:{タイムスタンプ:23212312312
量:500£}reqの番号を追跡するためのアルゴリズム
は、その後、私は私の最後の60秒で行われ、販売の詳細を与えるために責任がある機能の統計情報を持っています。戻ります 統計: 平均:最後の60秒 分間で行われたすべての販売量の平均:最大量
合計:すべての販売量の合計最後の60年代に 最大を行って販売量分最後の60秒で
件数:最後に実行された売上げ数60秒
この関数は、時空間でO(1)である必要があります。今、スペースreqを無視すると、リンクされたリストを使用して売上を最後の60秒間に格納し、それを継続的に更新する必要がありますか?統計関数が呼び出されたときに更新する必要があります。これはどのようにしてO(1)空間で行うことができますか?
私のソリューション: これは私のこの問題を解決するためのアプローチです: 私たちが何かを販売するたびに、そのアイテムをリンクリストに追加します。 java linkedlistには最初と最後の要素へのポインタがあるので、最初の要素は今から60年前に起こった最初の要素を指します。私たちが売り上げをするとき、私たちは60秒の時間枠の外に出るまで、要素をリストの最初から削除します。統計を呼び出すときには、タイムスタンプを見つけてそれを使ってリストの先頭から要素を削除するために現在の時刻 - 60秒をとります。しかし、min、max avgとsumを計算するときには、リストと=> O(n)を時間と空間の両方でループする必要があります。
最小最大値は、過去60秒間に発生した売り上げ額です。 – user2975699
もしそうでなければ、これをどのように解決すればよいですか?私たちは時間のためにo(1)を得ることができますか?統計funcが最後の60秒のすべての売り上げをループして、最小平均と合計を計算する必要がある場合は、O(N) – user2975699
関連する/可能な重複:https://stackoverflow.com/questions/556155 – augurar