> 文档中心 > LeetCode题解:6055.转化时间需要的最少操作数

LeetCode题解:6055.转化时间需要的最少操作数

文章目录

  • 题目
    • 1、题目描述
    • 2、原题链接
  • 解题报告
    • 1、解题思路
    • 2、解题方法
    • 2、代码详解
  • 总结

LeetCode题解:6055.转化时间需要的最少操作数

题目

1、题目描述

给你两个字符串 c u r r e n t current currentc 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、解题思路

LeetCode题解:6055.转化时间需要的最少操作数
  (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;}

总结

  想想是不是还有别的解法。。。