「每日LeetCode」2022年11月28日

本文最后更新于:2023年3月19日 晚上

2446.判断两个事件是否存在冲突

2446.判断两个事件是否存在冲突

Category Difficulty Likes Dislikes
algorithms Easy (56.64%) 8 -

Tags
Companies
给你两个字符串数组 event1 和 event2 ,表示发生在同一天的两个闭区间时间段事件,其中:

  • event1 = [startTime1, endTime1] 且
  • event2 = [startTime2, endTime2]

事件的时间为有效的 24 小时制且按 HH:MM 格式给出。
当两个事件存在某个非空的交集时(即,某些时刻是两个事件都包含的),则认为出现 冲突
如果两个事件之间存在冲突,返回 true_ ;否则,返回 _false 。

示例 1:
输入:event1 = [“01:15”,”02:00”], event2 = [“02:00”,”03:00”] 输出:true 解释:两个事件在 2:00 出现交集。
示例 2:
输入:event1 = [“01:00”,”02:00”], event2 = [“01:20”,”03:00”] 输出:true 解释:两个事件的交集从 01:20 开始,到 02:00 结束。
示例 3:
输入:event1 = [“10:00”,”11:00”], event2 = [“14:00”,”15:00”] 输出:false 解释:两个事件不存在交集。

提示:

  • evnet1.length == event2.length == 2.
  • event1[i].length == event2[i].length == 5
  • startTime1 <= endTime1
  • startTime2 <= endTime2
  • 所有事件的时间都按照 HH:MM 格式给出

Discussion | Solution

思路

4 种情况,按题意模拟即可

解答

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
/*
* @lc app=leetcode.cn id=2446 lang=javascript
*
* [2446] 判断两个事件是否存在冲突
*/

// @lc code=start
/**
* @param {string[]} event1
* @param {string[]} event2
* @return {boolean}
*/
var haveConflict = function (event1, event2) {
const [sh1, sm1, sh2, sm2, eh1, em1, eh2, em2] = [...event1, ...event2]
.map((item) => item.split(":"))
.flat(1)
.map((item) => +item);
if (
sh2 < eh1 ||
sh1 > eh2 ||
(sh2 === eh1 && em1 > sm2) ||
(sh1 === eh2 && sm1 > em2)
)
return false;
return true;
};
// @lc code=end