闯关leetcode——3168. Minimum Number of Chairs in a Waiting Room
题目
地址
https://leetcode.com/problems/minimum-number-of-chairs-in-a-waiting-room/description/
内容
You are given a string s. Simulate events at each second i:
If s[i] == ‘E’, a person enters the waiting room and takes one of the chairs in it.
If s[i] == ‘L’, a person leaves the waiting room, freeing up a chair.
Return the minimum number of chairs needed so that a chair is available for every person who enters the waiting room given that it is initially empty.
Example 1:
Input: s = “EEEEEEE”
Output: 7
Explanation:
After each second, a person enters the waiting room and no person leaves it. Therefore, a minimum of 7 chairs is needed.
Example 2:
Input: s = “ELELEEL”
Output: 2
Explanation:
Let’s consider that there are 2 chairs in the waiting room. The table below shows the state of the waiting room at each second.
| Second | Event | People in the Waiting Room | Available Chairs |
|---|---|---|---|
| 0 | Enter | 1 | 1 |
| 1 | Leave | 0 | 2 |
| 2 | Enter | 1 | 1 |
| 3 | Leave | 0 | 2 |
| 4 | Enter | 1 | 1 |
| 5 | Enter | 2 | 0 |
| 6 | Leave | 1 | 1 |
Example 3:
Input: s = “ELEELEELLL”
Output: 3
Explanation:
Let’s consider that there are 3 chairs in the waiting room. The table below shows the state of the waiting room at each second.
| Second | Event | People in the Waiting Room | Available Chairs |
|---|---|---|---|
| 0 | Enter | 1 | 2 |
| 1 | Leave | 0 | 3 |
| 2 | Enter | 1 | 2 |
| 3 | Enter | 2 | 1 |
| 4 | Leave | 1 | 2 |
| 5 | Enter | 2 | 1 |
| 6 | Enter | 3 | 0 |
| 7 | Leave | 2 | 1 |
| 8 | Leave | 1 | 2 |
| 9 | Leave | 0 | 3 |
Constraints:
- 1 <= s.length <= 50
- s consists only of the letters ‘E’ and ‘L’.
- s represents a valid sequence of entries and exits.
解题
这题就是模拟一个队列,E代表如队列,L代表出队列。然后按照字符串中的EL的信息,计算出这个队列最长时是多长。
我们不用使用队列或者栈这样的数据结构,直接使用计数器来做就行了。
#include <string>
#include <stack>
using namespace std;
class Solution {
public:
int minimumChairs(string s) {
int maxChairs = 0;
stack<int> chairs;
for (char c : s) {
if (c == 'L') {
chairs.pop();
} else {
chairs.push(1);
maxChairs = max(maxChairs, (int)chairs.size());
}
}
return maxChairs;
}
};

代码地址
更多推荐



所有评论(0)