⭐️前面的话⭐️
本篇文章介绍【2446. 判断两个事件是否存在冲突】题解,算法标签:【模拟】,【字符串】,展示语言c++/java。
📒博客主页:未见花闻的博客主页
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📌本文由未见花闻原创,CSDN首发!
📆首发时间:🌴2023年5月17日🌴
✉️坚持和努力一定能换来诗与远方!
💭推荐书籍:📚《算法》,📚《算法导论》
💬参考在线编程网站:🌐牛客网🌐力扣
博主的码云gitee,平常博主写的程序代码都在里面。
博主的github,平常博主写的程序代码都在里面。
🍭作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!
📌导航小助手📌
- ⭐️2446. 判断两个事件是否存在冲突⭐️
- 🔐题目详情
- 💡解题思路
- 🔑源代码
- 🌱总结
⭐️2446. 判断两个事件是否存在冲突⭐️
🔐题目详情
2446. 判断两个事件是否存在冲突
难度简单
给你两个字符串数组 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
格式给出
💡解题思路
题目所给字符串格式是单一的,我们可以直接解析字符串,将时钟数转换为秒数进行大小比较,最后验证是否存在交集即可。
对于交集的验证,考虑两种情况画个区间就可以了。
🔑源代码
c++代码:
class Solution {
public:
bool haveConflict(vector<string>& event1, vector<string>& event2) {
int s1 = (((event1[0][0] -'0') * 10 + event1[0][1] - '0') * 60 +
(event1[0][3] - '0') * 10 + event1[0][4] - '0');
int e1 = (((event1[1][0] - '0') * 10 + event1[1][1] - '0') * 60 +
(event1[1][3] - '0') * 10 + event1[1][4] - '0');
int s2 = (((event2[0][0] - '0') * 10 + event2[0][1] - '0') * 60 +
(event2[0][3] - '0') * 10 + event2[0][4] - '0');
int e2 = (((event2[1][0] - '0') * 10 + event2[1][1] - '0') * 60 +
(event2[1][3] - '0') * 10 + event2[1][4] - '0');
//cout << s1 << " " << e1 << " " << s2 << " " << e2 << " " << endl;
if (s2 <= e1 && e1 <= e2 || s1 <= e2 && e1 >= e2) return true;
else return false;
}
};
java代码:
class Solution {
public boolean haveConflict(String[] event1, String[] event2) {
String st1 = event1[0];
String en1 = event1[1];
String st2 = event2[0];
String en2 = event2[1];
int s1 = ((st1.charAt(0) - '0') * 10 + st1.charAt(1) - '0') * 60 + (st1.charAt(3) - '0') * 10 + st1.charAt(4) - '0';
int e1 = ((en1.charAt(0) - '0') * 10 + en1.charAt(1) - '0') * 60 + (en1.charAt(3) - '0') * 10 + en1.charAt(4) - '0';
int s2 = ((st2.charAt(0) - '0') * 10 + st2.charAt(1) - '0') * 60 + (st2.charAt(3) - '0') * 10 + st2.charAt(4) - '0';
int e2 = ((en2.charAt(0) - '0') * 10 + en2.charAt(1) - '0') * 60 + (en2.charAt(3) - '0') * 10 + en2.charAt(4) - '0';
if (s1 <= e2 && e1 >= e2 || s2 <= e1 && e2 >= e1) return true;
return false;
}
}
🌱总结
简单模拟题。