长沙专业个人做网站哪家好,牌子网官网,企业网络设计方案预算,阿里巴巴网站开发工具文章目录1. 题目2. 解题1. 题目
给你两个字符串 current 和 correct #xff0c;表示两个 24 小时制时间 。
24 小时制时间 按 HH:MM 进行格式化#xff0c;其中 HH 在 00 和 23 之间#xff0c;而 MM 在 00 和 59 之间。 最早的 24 小时制时间为 00:00 …
文章目录1. 题目2. 解题1. 题目
给你两个字符串 current 和 correct 表示两个 24 小时制时间 。
24 小时制时间 按 HH:MM 进行格式化其中 HH 在 00 和 23 之间而 MM 在 00 和 59 之间。 最早的 24 小时制时间为 00:00 最晚的是 23:59 。
在一步操作中你可以将 current 这个时间增加 1、5、15 或 60 分钟。 你可以执行这一操作 任意 次数。
返回将 current 转化为 correct 需要的 最少操作数 。
示例 1
输入current 02:30, correct 04:35
输出3
解释
可以按下述 3 步操作将 current 转换为 correct
- 为 current 加 60 分钟current 变为 03:30 。
- 为 current 加 60 分钟current 变为 04:30 。
- 为 current 加 5 分钟current 变为 04:35 。
可以证明无法用少于 3 步操作将 current 转化为 correct 。示例 2
输入current 11:00, correct 11:01
输出1
解释只需要为 current 加一分钟所以最小操作数是 1 。提示
current 和 correct 都符合 HH:MM 格式
current correct来源力扣LeetCode 链接https://leetcode-cn.com/problems/minimum-number-of-operations-to-convert-time 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
贪心优先使用大的数字
class Solution {
public:int convertTime(string current, string correct) {int diff getminutes(correct)-getminutes(current);int ans 0;operate(diff, ans, 60);operate(diff, ans, 15);operate(diff, ans, 5);operate(diff, ans, 1);return ans;}int getminutes(string s){return ((s[0]-0)*10(s[1]-0))*60(s[3]-0)*10(s[4]-0);}void operate(int diff, int ans, int interval){if(diff interval){ans diff/interval;diff - diff/interval*interval;}}
};0 ms 5.8 MB C 我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号Michael阿明一起加油、一起学习进步