LeetCode题解:6055.转化时间需要的最少操作数
文章目录
- 题目
-
- 1、题目描述
- 2、原题链接
- 解题报告
-
- 1、解题思路
- 2、解题方法
- 2、代码详解
- 总结
题目
1、题目描述
给你两个字符串 c u r r e n t current current 和 c o r r e c t correct correct ,表示两个 24 小时制时间 。
24 小时制时间 按"HH:MM"
进行格式化,其中 HH 在 00 和 23 之间,而 MM 在 00 和 59 之间。最早的 24 小时制时间为00:00
,最晚的是23:59
。
在一步操作中,你可以将 c u r r e n t current current 这个时间增加 1、5、15 或 60 分钟。你可以执行这一操作 任意 次数。
返回将 c u r r e n t current current 转化为 c o r r e c t correct correct 需要的 最少操作数 。
2、原题链接
6055.转化时间需要的最少操作数
解题报告
1、解题思路
(1)由于这个表只能增加时间不能减少时间而且不会从23:00到01:00所以是水题。
(2)将当前时间与要求时间转换成分钟数再进行比较。
(3)两数之差大于60那么每次增加60分钟。大于15小于60每次增加15分钟。以此类推,直到时间一致。
2、解题方法
贪心算法
2、代码详解
int convertTime(char * current, char * correct){ int HH = 0; int CHH = 0; int ans = 0; HH = (current[0] - '0')*10*60; HH += (current[1] - '0')*60; HH += (current[3] - '0')*10; HH += (current[4] - '0'); CHH = (correct[0] - '0')*10*60; CHH += (correct[1] - '0')*60; CHH += (correct[3] - '0')*10; CHH += (correct[4] - '0'); while(CHH != HH){ if(CHH - HH >= 60){ ++ans; HH += 60; }else if(CHH - HH >= 15){ ++ans; HH += 15; }else if(CHH - HH >= 5){ ++ans; HH += 5; }else if(CHH - HH >= 1){ ++ans; HH += 1; } } return ans;}
总结
想想是不是还有别的解法。。。