Day 34 1904. 你完成的完整对局数

1904. 你完成的完整对局数

题目

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
一款新的在线电子游戏在近期发布,

在该电子游戏中,以刻钟为周期规划若干时长为 15 分钟的游戏对局。

这意味着,在 HH:00、HH:15、HH:30 和 HH:45

将会开始一个新的对局,其中 HH 用一个从 0023 的整数表示。

游戏中使用 24 小时制的时钟,所以一天中最早的时间是 00:00 ,最晚的时间是 23:59

给你两个字符串 startTime 和 finishTime ,均符合 "HH:MM" 格式,

分别表示你进入和退出游戏的确切时间,请计算在整个游戏会话期间,你完成的完整对局的对局数 。

例如,如果 startTime = "05:20" 且 finishTime = "05:59"

这意味着你仅仅完成从 05:3005:45 这一个完整对局。

而你没有完成从 05:1505:30 的完整对局,因为你是在对局开始后进入的游戏;

同时,你也没有完成从 05:4506:00 的完整对局,因为你是在对局结束前退出的游戏。

如果 finishTime 早于 startTime ,这表示你玩了个通宵

假设你是从 startTime 进入游戏,并在 finishTime 退出游戏,

请计算并返回你完成的 完整对局的对局数 。

 

示例 1

输入:startTime = "12:01", finishTime = "12:44"
输出:1
解释:你完成了从 12:1512:30 的一个完整对局。
你没有完成从 12:0012:15 的完整对局,

因为你是在对局开始后的 12:01 进入的游戏。

你没有完成从 12:3012:45 的完整对局,

因为你是在对局结束前的 12:44 退出的游戏。
示例 2

输入:startTime = "20:00", finishTime = "06:00"
输出:40
解释:
你完成了从 20:0000:0016 个完整的对局,
以及从 00:0006:0024 个完整的对局。
16 + 24 = 40
示例 3

输入:startTime = "00:00", finishTime = "23:59"
输出:95
解释:除最后一个小时你只完成了 3 个完整对局外,

其余每个小时均完成了 4 场完整对局。
 

提示:

startTime 和 finishTime 的格式为 HH:MM
00 <= HH <= 23
00 <= MM <= 59
startTime 和 finishTime 不相等

题目思路

  • 1、模拟题目,题目多读几遍,就会了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public:
int numberOfRounds(string startTime, string finishTime)
{
int h1 = stoi(startTime.substr(0, 2));
int m1 = stoi(startTime.substr(3, 2));
int h2 = stoi(finishTime.substr(0, 2));
int m2 = stoi(finishTime.substr(3, 2));

int a1 = h1 * 60 + m1;
int a2 = h2 * 60 + m2;
if (a1 > a2)
a2 += 24 * 60;

int a = ceil(double(a1) / 15);
int b = floor(double(a2) / 15);

return max(0, b - a);
}
};

复杂度

  • 时间复杂度:O(1)

  • 空间复杂度:O(1)


Day 34 1904. 你完成的完整对局数
https://chaggle.github.io/2021/10/13/Leetcode/91-day/day-34/
作者
chaggle
发布于
2021年10月13日
许可协议