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


在这里插入图片描述

题目

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;
}

总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值