Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでの最近の呼び出しの数


最近のリクエストをカウントするRecentCounterというクラスを作成するとします。このクラスには、ping(t)という1つのメソッドしかありません。ここで、tはミリ秒単位の時間を表します。これにより、3000ミリ秒前から現在までに行われたpingの数が返されます。 [t-3000、t]の時間のpingは、現在のpingを含めてカウントされます。また、すべての呼び出しトッピングで、以前よりも厳密に大きいtの値が使用されることが保証されています。

したがって、入力がpingを4回呼び出してping(1)、ping(100)、ping(3001)、ping(3002)のようになっている場合、出力はそれぞれ1,2,3,3になります。

これを解決するには、次の手順に従います-

  • 1つのキューを作成してクラスを初期化します。最初は、これは空です
  • 関数ping()を定義します。これには時間がかかります
  • キューのサイズが0ではなく、t --queue [0]> 3000の場合、do
    • キューから最初の要素を削除する
  • キューの最後にtを挿入
  • キューのサイズを返す

理解を深めるために、次の実装を見てみましょう-

class RecentCounter:
   def __init__(self):
      self.queue = []
   def ping(self, t):
      while len(self.queue) and t - self.queue[0] > 3000:
         self.queue.pop(0)
         self.queue.append(t)
      return len(self.queue)
ob = RecentCounter()
print(ob.ping(1))
print(ob.ping(100))
print(ob.ping(3001))
print(ob.ping(3002))

入力

ob.ping(1) ob.ping(100) ob.ping(3001) ob.ping(3002)

出力

1
2
3
3

  1. Pythonの回文数

    整数があるとします。整数が回文であるかどうかを確認する必要があります。つまり、整数は順方向または逆方向の両方で同じであり、その数は回文です。たとえば、番号が454であるとすると、逆にすると再び454になります。これが回文です。ここで、数値が-565の場合、その逆は565-になります。これは同じではないため、これは回文ではありません。 これを解決するために、数値を文字列として変換してから、文字列を逆にします。文字列と逆文字列が同じ場合、番号は回文です。したがって、その場合はtrueを返し、それ以外の場合はfalseを返します。 理解を深めるために実装を見てみましょう 例 class Solu

  2. Pythonのfactorial()

    数値の階乗を見つけることは、Pythonを含むデータ分析やその他の数学的分析で頻繁に必要とされます。階乗は、1から指定された数までのすべての整数を乗算することにより、常に正の整数に対して検出されます。以下に示すように、これを見つけるには3つのアプローチがあります。 Forループの使用 forループを使用して、指定された数まで1番を繰り返し、各ステップで乗算を続けることができます。以下のプログラムでは、ループで使用する前に、数値を入力して入力を整数に変換するようにユーザーに求めています。このようにして、計算で正の整数を確実に取得します。 例 n = input("Enter a nu