返回介绍

solution / 2500-2599 / 2534.Time Taken to Cross the Door / README

发布于 2024-06-17 01:03:04 字数 2395 浏览 0 评论 0 收藏 0

2534. 通过门的时间

English Version

题目描述

n 个人,按从 0n - 1 编号。现在有一扇门,每个人只能通过门进入或离开一次,耗时一秒。

给你一个 非递减顺序 排列的整数数组 arrival ,数组长度为 n ,其中 arrival[i] 是第 i 个人到达门前的时间。另给你一个长度为 n 的数组 state ,其中 state[i]0 则表示第 i 个人希望进入这扇门,是 1 则表示 TA 想要离开这扇门。

如果 同时 有两个或更多人想要使用这扇门,则必须遵循以下规则:

  • 如果前一秒 没有 使用门,那么想要 离开 的人会先离开。
  • 如果前一秒使用门 进入 ,那么想要 进入 的人会先进入。
  • 如果前一秒使用门 离开 ,那么想要 离开 的人会先离开。
  • 如果多个人都想朝同一方向走(都进入或都离开),编号最小的人会先通过门。

返回一个长度为 n 的数组_ _answer_ _,其中_ _answer[i]_ _是第 i 个人通过门的时刻(秒)。

注意:

  • 每秒只有一个人可以通过门。
  • 为遵循上述规则,一个人可以在到达门附近后等待,而不通过门进入或离开。

 

示例 1:

输入:arrival = [0,1,1,2,4], state = [0,1,0,0,1]
输出:[0,3,1,2,4]
解释:每秒发生的情况如下:
- t = 0 :第 0 个人是唯一一个想要进入的人,所以 TA 可以直接进入。
- t = 1 :第 1 个人想要离开,第 2 个人想要进入。因为前一秒有人使用门进入,所以第 2 个人先进入。
- t = 2 :第 1 个人还是想要离开,第 3 个人想要进入。因为前一秒有人使用门进入,所以第 3 个人先进入。
- t = 3 :第 1 个人是唯一一个想要离开的人,所以 TA 可以直接离开。
- t = 4 :第 4 个人是唯一一个想要进入的人,所以 TA 可以直接离开。

示例 2:

输入:arrival = [0,0,0], state = [1,0,1]
输出:[0,2,1]
解释:每秒发生的情况如下:
- t = 0 :第 1 个人想要进入,但是第 0 个人和第 2 个人都想要离开。因为前一秒没有使用门,所以想要离开的人会先离开。又因为第 0 个人的编号更小,所以 TA 先离开。
- t = 1 :第 1 个人想要进入,第 2 个人想要离开。因为前一秒有人使用门离开,所以第 2 个人先离开。
- t = 2 :第 1 个人是唯一一个想要进入的人,所以 TA 可以直接进入。

 

提示:

  • n == arrival.length == state.length
  • 1 <= n <= 105
  • 0 <= arrival[i] <= n
  • arrival非递减顺序 排列
  • state[i]01

解法

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文