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
-
Pythonの回文数
整数があるとします。整数が回文であるかどうかを確認する必要があります。つまり、整数は順方向または逆方向の両方で同じであり、その数は回文です。たとえば、番号が454であるとすると、逆にすると再び454になります。これが回文です。ここで、数値が-565の場合、その逆は565-になります。これは同じではないため、これは回文ではありません。 これを解決するために、数値を文字列として変換してから、文字列を逆にします。文字列と逆文字列が同じ場合、番号は回文です。したがって、その場合はtrueを返し、それ以外の場合はfalseを返します。 理解を深めるために実装を見てみましょう 例 class Solu
-
Pythonのfactorial()
数値の階乗を見つけることは、Pythonを含むデータ分析やその他の数学的分析で頻繁に必要とされます。階乗は、1から指定された数までのすべての整数を乗算することにより、常に正の整数に対して検出されます。以下に示すように、これを見つけるには3つのアプローチがあります。 Forループの使用 forループを使用して、指定された数まで1番を繰り返し、各ステップで乗算を続けることができます。以下のプログラムでは、ループで使用する前に、数値を入力して入力を整数に変換するようにユーザーに求めています。このようにして、計算で正の整数を確実に取得します。 例 n = input("Enter a nu