经典模拟

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
      28
      class 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/算法刷题/经典模拟/
作者
Cyokeo
发布于
2024年9月18日
许可协议