当前位置: 首页 > news >正文

1904. 你完成的完整对局数

题目:

一款新的在线电子游戏在近期发布,在该电子游戏中,以 刻钟 为周期规划若干时长为 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 不相等

java代码:

class Solution {public int numberOfRounds(String loginTime, String logoutTime) {int[] login = this.time(loginTime);int[] logout = this.time(logoutTime);this.ceiling(login);// 最近大,调整到最近一个开始的起点,顺时针调整时间this.floor(logout);// 最近小,调整到最近一个结束的终点,逆时针调整时间if (loginTime.compareTo(logoutTime) < 0) {// 同一天return Math.max(round24(login) - round24(logout), 0);//wa2} else {// 不同天return round24(login) + round00(logout);}}// 玩到0点能玩几局private int round24(int[] time) {return ((23 - time[0]) << 2) + this.round(time[1]);}// 从0点玩能玩几局private int round00(int[] time) {return (time[0] << 2) + 4 - this.round(time[1]);}// 玩到下一个整点能玩几局private int round(int minute) {if (minute == 0) {return 4;}if (minute == 15) {return 3;}if (minute == 30) {return 2;}return 1;}// 最近小private void floor(int[] time) {int minute = time[1];if (minute == 0 || minute == 15 || minute == 30 || minute == 45) {return;}if (minute < 15) {time[1] = 0;return;}if (minute < 30) {time[1] = 15;return;}if (minute < 45) {time[1] = 30;return;}time[1] = 45;}// 最近大private void ceiling(int[] time) {int minute = time[1];if (minute == 0 || minute == 15 || minute == 30 || minute == 45) {return;}if (minute < 15) {time[1] = 15;return;}if (minute < 30) {time[1] = 30;return;}if (minute < 45) {time[1] = 45;return;}time[1] = 0;time[0] += 1;// wa1!!!!}private int[] time(String time) {return new int[] { Integer.valueOf(time.substring(0, 2)), Integer.valueOf(time.substring(3, 5)) };}}
http://www.lryc.cn/news/19669.html

相关文章:

  • Vue3:自定义指令以及简单的后台管理权限封装
  • 剑指 Offer 12. 矩阵中的路径
  • springboot+jersey+tomcat实现跨域方式上传文件到服务器
  • 【微信小程序】-- 常用视图容器类组件介绍 -- view、scroll-view和swiper(六)
  • 猜数字游戏——C++
  • 整数对最小和
  • 2023-2-22 -javaagent
  • JavaScript BOM操作
  • 【机器学习 | 强基计划】开山篇 | 机器学习介绍及其类别和概念阐述
  • 华为OD机试真题Java实现【合规数组】真题+解题思路+代码(20222023)
  • BoostSearcher搜索引擎项目
  • 【模拟集成电路】频率综合器(Frequency Synthesizer,FS)设计
  • 实例8:机器人的空间描述和变换仿真
  • 网络 导航
  • Web Spider Ast-Hook 浏览器内存漫游-数据检索
  • 计算机网络笔记、面试八股(二)——HTTP协议
  • docker快速上手使用
  • <c++> 类的构造函数与类的析构函数
  • 华为OD机试真题Java实现【玩牌高手】真题+解题思路+代码(20222023)
  • Hive Sql整体优化思路
  • 【华为OD机试模拟题】用 C++ 实现 - 数组的中心位置(2023.Q1)
  • 取指定数值的地址 (int 转 void *)
  • C#的多线程、线程池和Task
  • Day20【元宇宙的实践构想06】—— 元宇宙与Web3.0
  • 极限熵和冗余度
  • 女生学习大数据专业未来前景怎么样
  • 主题模型实践
  • 按字典序排列的最小的等价字符串[拆解并查集]
  • 操作系统——6.系统调用
  • JavaScript DOM操作