牛牛的闹钟------2020今日头条秋招第一题

本文介绍了一道关于计算最晚起床时间的算法题目,通过贪心算法和时间转换技巧,实现对多个闹钟时间的排序与比较,确保学生能够准时到达教室。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

牛牛总是睡过头,所以他定了很多闹钟,只有在闹钟响的时候他才会醒过来并且决定起不起床。从他起床算起他需要X分钟到达教室,上课时间为当天的A时B分,请问他最晚可以什么时间起床

输入描述:

每个输入包含一个测试用例。
每个测试用例的第一行包含一个正整数,表示闹钟的数量N(N<=100)。
接下来的N行每行包含两个整数,表示这个闹钟响起的时间为Hi(0<=A<24)时Mi(0<=B<60)分。
接下来的一行包含一个整数,表示从起床算起他需要X(0<=X<=100)分钟到达教室。
接下来的一行包含两个整数,表示上课时间为A(0<=A<24)时B(0<=B<60)分。
数据保证至少有一个闹钟可以让牛牛及时到达教室。

输出描述:

输出两个整数表示牛牛最晚起床时间。

示例1

输入

3 
5 0 
6 0 
7 0 
59 
6 59

输出

6 0

运行时间:93ms 占用内存:10900k

话说这道题是2019/8/11那天的今日头条笔试的第一道题,而且是原题!!!但是我之前没在牛客网上刷过题,话说牛客的输入输出搞得是真差,就不能学学leetcode(之前一直在leetcode上刷题)。考试那天第一次接触牛客网,心里是炸的,因为时间全浪费在这上面了,好多题没有做。所以,大家一定要在牛客上多刷题。

好了言归正传,首先这道问题我我想到的就是贪心算法(我一直认为输入的闹钟是有序的,所以没排序就做了,但是后来发现这个闹钟时间不是按照时间大小排好序的,所以一定要先排序,考试就错在这个地方了,过了30%)。而且题干给的是小时和分钟,这样不好排序,那就将小时转换为分钟即,(小时*60+分钟)。然后排序,倒序比较(因为最大的时间在最后,只要找到一个合适的输出即可)。 

import java.util.Scanner;
import java.util.Arrays;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
            int times[] = new int[n];
            for(int i=0;i<n;i++){
                int hours = sc.nextInt();
                int mins = sc.nextInt();
                times[i] = hours*60+mins;
            }
            Arrays.sort(times);
            int x = sc.nextInt();
            int a = sc.nextInt();
            int b = sc.nextInt();
            int endTime = a*60+b;
            for(int i=n-1;i>=0;i--){
                if(times[i]+x<=endTime){
                    System.out.println(times[i]/60+" "+times[i]%60);
                    break;
                }
            }
        }
        sc.close();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值