经典模拟
2332. 坐上公交的最晚时间
- 灵神解法真的很巧妙
- 因为要使用最后一个装了多少,巧妙的把它放在循环里面
- 因为要找到最后一个上车的,也是直接使用前面模拟的结果
- 寻找插队位置时更是如此:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28class Solution
{
public:
int latestTimeCatchTheBus(vector<int>& buses,
vector<int>& passengers, int capacity)
{
ranges::sort(buses);
ranges::sort(passengers);
// 模拟乘客上车
int j = 0, c;
for (int t : buses)
{
for (c = capacity; c && j < passengers.size()
&& passengers[j] <= t; c--)
{ j++; }
}
// 寻找插队时机
j--;
int ans = c ? buses.back() : passengers[j];
while (j >= 0 && ans == passengers[j])
{
ans--;
// 往前找没人到达的时刻
j--;
}
return ans;
}
};
经典模拟
http://example.com/2024/09/18/算法刷题/经典模拟/