933.最近のリクエスト回数(Python)
1184 ワード
もっと素晴らしい内容は、「力ボタンの簡単な問題」に注目してください.
タイトル
難易度:★☆☆☆☆タイプ:キュー
RecentCounterクラスを書いて、最近のリクエストを計算します.
ping(int t)という方法しかありません.ここで、tはミリ秒単位の時間を表します.
3000ミリ秒前から現在までのping数を返します.
[t−3000,t]時間範囲内のpingは、現在(t時刻を指す)のpingを含む計算される.
pingの呼び出しのたびに、以前よりも大きなt値が使用されることを保証します.
各テスト・インスタンスに最大10000回pingを呼び出すよう求めます.各テストインスタンスは、厳格に増加したt値を使用してpingを呼び出します.pingを呼び出すたびに1<=t<=10^9となる.
例
入力:inputs=[[RecentCounter],[ping],[ping],[ping],[ping],[ping],[ping],[inputs=[[],[100],[300],[3002]]出力:[null,1,2,3,3]
に答える
現在の時間から3秒以内のすべてのpingの時刻を格納するためのキューlatestを用意し、pingのたびに、キュー内の早期にエンキューされた時刻が期限切れになったかどうかを考察し、期限切れの要素をすべて除去し、キューの長さを返します.
質問やアドバイスがあれば、コメントエリアへようこそ~
タイトル
難易度:★☆☆☆☆タイプ:キュー
RecentCounterクラスを書いて、最近のリクエストを計算します.
ping(int t)という方法しかありません.ここで、tはミリ秒単位の時間を表します.
3000ミリ秒前から現在までのping数を返します.
[t−3000,t]時間範囲内のpingは、現在(t時刻を指す)のpingを含む計算される.
pingの呼び出しのたびに、以前よりも大きなt値が使用されることを保証します.
各テスト・インスタンスに最大10000回pingを呼び出すよう求めます.各テストインスタンスは、厳格に増加したt値を使用してpingを呼び出します.pingを呼び出すたびに1<=t<=10^9となる.
例
入力:inputs=[[RecentCounter],[ping],[ping],[ping],[ping],[ping],[ping],[inputs=[[],[100],[300],[3002]]出力:[null,1,2,3,3]
に答える
現在の時間から3秒以内のすべてのpingの時刻を格納するためのキューlatestを用意し、pingのたびに、キュー内の早期にエンキューされた時刻が期限切れになったかどうかを考察し、期限切れの要素をすべて除去し、キューの長さを返します.
class RecentCounter:
def __init__(self):
self.latest = [] # ping
def ping(self, t: int) -> int:
self.latest.append(t) #
while self.latest and t - self.latest[0] > 3000:
self.latest.pop(0) # 3
return len(self.latest)
if __name__ == "__main__":
r = RecentCounter()
print(r.ping(1))
print(r.ping(100))
print(r.ping(3001))
print(r.ping(3002))
質問やアドバイスがあれば、コメントエリアへようこそ~