LeetCode——1904. 你完成的完整对局数[The Number of Full Rounds You Have Played][中等]——分析及代码[Java]
一、题目
一款新的在线电子游戏在近期发布,在该电子游戏中,以 刻钟 为周期规划若干时长为 15 分钟 的游戏对局。这意味着,在 HH:00、HH:15、HH:30 和 HH:45 ,将会开始一个新的对局,其中 HH 用一个从 00 到 23 的整数表示。游戏中使用 24 小时制的时钟 ,所以一天中最早的时间是 00:00 ,最晚的时间是 23:59 。
给你两个字符串 startTime 和 finishTime ,均符合 “HH:MM” 格式,分别表示你 进入 和 退出 游戏的确切时间,请计算在整个游戏会话期间,你完成的 完整对局的对局数 。
- 例如,如果 startTime = “05:20” 且 finishTime = “05:59” ,这意味着你仅仅完成从 05:30 到 05:45 这一个完整对局。而你没有完成从 05:15 到 05:30 的完整对局,因为你是在对局开始后进入的游戏;同时,你也没有完成从 05:45 到 06:00 的完整对局,因为你是在对局结束前退出的游戏。
如果 finishTime 早于 startTime ,这表示你玩了个通宵(也就是从 startTime 到午夜,再从午夜到 finishTime)。
假设你是从 startTime 进入游戏,并在 finishTime 退出游戏,请计算并返回你完成的 完整对局的对局数 。
示例 1:
输入:startTime = "12:01", finishTime = "12:44"
输出:1
解释:你完成了从 12:15 到 12:30 的一个完整对局。
你没有完成从 12:00 到 12:15 的完整对局,因为你是在对局开始后的 12:01 进入的游戏。
你没有完成从 12:30 到 12:45 的完整对局,因为你是在对局结束前的 12:44 退出的游戏。
示例 2:
输入:startTime = "20:00", finishTime = "06:00"
输出:40
解释:你完成了从 20:00 到 00:00 的 16 个完整的对局,以及从 00:00 到 06:00 的 24 个完整的对局。
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 不相等
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/the-number-of-full-rounds-you-have-played
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
二、分析及代码
1. 直接计算
(1)思路
提取进入和退出游戏的时间数据,直接计算完成的完整对局数。
(2)代码
class Solution {
public int numberOfRounds(String startTime, String finishTime) {
int sHour = Integer.parseInt(startTime.substring(0, 2)), sMin = Integer.parseInt(startTime.substring(3, 5));//起始小时、分钟
int fHour = Integer.parseInt(finishTime.substring(0, 2)), fMin = Integer.parseInt(finishTime.substring(3, 5));//结束小时、分钟
if (fHour < sHour || (fHour == sHour && fMin < sMin))//判断是否通宵
fHour += 24;
int ans = (fHour - sHour) * 4;//[起始小时,结束小时)内对局数
ans -= (sMin + 14) / 15;//减去起始小时中未完整进行的对局数
ans += fMin / 15;//增加结束小时中完整进行的对局数
return Math.max(ans, 0);//避免无完整对局时重复相减,造成负数答案
}
}
(3)结果
执行用时 :0 ms,在所有 Java 提交中击败了 100.00% 的用户;
内存消耗 :36.6 MB,在所有 Java 提交中击败了 100.00% 的用户。
(目前提交用户量不足,暂无排名)
三、其他
暂无。