Skip to content

Commit 11034f0

Browse files
committed
feat: add python and java solutions to leetcode problem: No.0933
See https://leetcode-cn.com/problems/number-of-recent-calls/submissions
1 parent 6d66791 commit 11034f0

File tree

6 files changed

+118
-2
lines changed

6 files changed

+118
-2
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@
9898
1. [用栈实现队列](/solution/0200-0299/0232.Implement%20Queue%20using%20Stacks/README.md)
9999
1. [用队列实现栈](/solution/0200-0299/0225.Implement%20Stack%20using%20Queues/README.md)
100100
1. [逆波兰表达式求值](/solution/0100-0199/0150.Evaluate%20Reverse%20Polish%20Notation/README.md)
101+
1. [最近的请求次数](/solution/0900-0999/0933.Number%20of%20Recent%20Calls/README.md)
101102

102103
### 动态规划
103104

README_EN.md

+1
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ Complete solutions to [LeetCode](https://leetcode-cn.com/problemset/all/), [LCOF
9393
1. [Implement Queue using Stacks](/solution/0200-0299/0232.Implement%20Queue%20using%20Stacks/README_EN.md)
9494
1. [Implement Stack using Queues](/solution/0200-0299/0225.Implement%20Stack%20using%20Queues/README_EN.md)
9595
1. [Evaluate Reverse Polish Notation](/solution/0100-0199/0150.Evaluate%20Reverse%20Polish%20Notation/README_EN.md)
96+
1. [Number of Recent Calls](/solution/0900-0999/0933.Number%20of%20Recent%20Calls/README_EN.md)
9697

9798
### Dynamic Programming
9899

solution/0900-0999/0933.Number of Recent Calls/README.md

+41-1
Original file line numberDiff line numberDiff line change
@@ -40,20 +40,60 @@
4040

4141
<!-- tabs:start -->
4242

43+
在第 1、100、3001、3002 这四个时间点分别进行了 ping 请求, 在 3001 秒的时候, 它前面的 3000 秒指的是区间 `[1,3001]`, 所以一共是有 `1、100、3001` 三个请求, t = 3002 的前 3000 秒指的是区间 `[2,3002]`, 所以有 `100、3001、3002` 三次请求。
44+
45+
可以用队列实现。每次将 t 进入队尾,同时从队头开始依次移除小于 `t-3000` 的元素。然后返回队列的大小 `q.size()` 即可。
46+
4347
### **Python3**
4448

4549
<!-- 这里可写当前语言的特殊实现逻辑 -->
4650

4751
```python
52+
class RecentCounter:
53+
54+
def __init__(self):
55+
self.q = []
56+
4857

58+
def ping(self, t: int) -> int:
59+
self.q.append(t)
60+
while self.q[0] < t - 3000:
61+
self.q.pop(0)
62+
return len(self.q)
63+
64+
65+
# Your RecentCounter object will be instantiated and called as such:
66+
# obj = RecentCounter()
67+
# param_1 = obj.ping(t)
4968
```
5069

5170
### **Java**
5271

5372
<!-- 这里可写当前语言的特殊实现逻辑 -->
5473

5574
```java
56-
75+
class RecentCounter {
76+
77+
private Deque<Integer> q;
78+
79+
public RecentCounter() {
80+
q = new ArrayDeque<>();
81+
}
82+
83+
public int ping(int t) {
84+
q.offerLast(t);
85+
while (q.peekFirst() < t - 3000) {
86+
q.pollFirst();
87+
}
88+
return q.size();
89+
}
90+
}
91+
92+
/**
93+
* Your RecentCounter object will be instantiated and called as such:
94+
* RecentCounter obj = new RecentCounter();
95+
* int param_1 = obj.ping(t);
96+
*/
5797
```
5898

5999
### **...**

solution/0900-0999/0933.Number of Recent Calls/README_EN.md

+37-1
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,49 @@
4747
### **Python3**
4848

4949
```python
50+
class RecentCounter:
5051

52+
def __init__(self):
53+
self.q = []
54+
55+
56+
def ping(self, t: int) -> int:
57+
self.q.append(t)
58+
while self.q[0] < t - 3000:
59+
self.q.pop(0)
60+
return len(self.q)
61+
62+
63+
# Your RecentCounter object will be instantiated and called as such:
64+
# obj = RecentCounter()
65+
# param_1 = obj.ping(t)
5166
```
5267

5368
### **Java**
5469

5570
```java
56-
71+
class RecentCounter {
72+
73+
private Deque<Integer> q;
74+
75+
public RecentCounter() {
76+
q = new ArrayDeque<>();
77+
}
78+
79+
public int ping(int t) {
80+
q.offerLast(t);
81+
while (q.peekFirst() < t - 3000) {
82+
q.pollFirst();
83+
}
84+
return q.size();
85+
}
86+
}
87+
88+
/**
89+
* Your RecentCounter object will be instantiated and called as such:
90+
* RecentCounter obj = new RecentCounter();
91+
* int param_1 = obj.ping(t);
92+
*/
5793
```
5894

5995
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class RecentCounter {
2+
3+
private Deque<Integer> q;
4+
5+
public RecentCounter() {
6+
q = new ArrayDeque<>();
7+
}
8+
9+
public int ping(int t) {
10+
q.offerLast(t);
11+
while (q.peekFirst() < t - 3000) {
12+
q.pollFirst();
13+
}
14+
return q.size();
15+
}
16+
}
17+
18+
/**
19+
* Your RecentCounter object will be instantiated and called as such:
20+
* RecentCounter obj = new RecentCounter();
21+
* int param_1 = obj.ping(t);
22+
*/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class RecentCounter:
2+
3+
def __init__(self):
4+
self.q = []
5+
6+
7+
def ping(self, t: int) -> int:
8+
self.q.append(t)
9+
while self.q[0] < t - 3000:
10+
self.q.pop(0)
11+
return len(self.q)
12+
13+
14+
# Your RecentCounter object will be instantiated and called as such:
15+
# obj = RecentCounter()
16+
# param_1 = obj.ping(t)

0 commit comments

Comments
 (0)