【在线编程产品介绍】
阿里云开发者社区在线编程:
免费刷题大神器,助你拿到好offer
周赛月赛不停歇,做题还能领奖品
大赛笔试全真题,常做常新有惊喜
点击链接开始产品体验:https://developer.aliyun.com/coding
本文为大家介绍的是“98.坏掉的时钟”的解法探究。先来看一下题目内容:
题目描述
等级:容易
知识点:模拟
查看题目:坏掉的时钟
B同学有一个时钟,能够显示1-d,初始值为1。这个时钟每天显示的数字加一,特殊的,当某天显示的值为d时,第二天就会显示1。
但是每个月的时间并不总是d天,因此B同学就要通过手动调整使得显示的时间正确,每次手调都可以使显示数字加一。
现在给你n个月每月的天数,请你计算一下若是让时钟每天显示的数字都是正确的,他这n个月一共需要调多少次时钟。
输入月份数n(1 <= n <= 10^5)、时钟的最大显示时间d(1 <= d <= 10^4)和一个包含n个数的数组,第i个数表示第i个月有ai天(1 <= ai <= d)
输出使时钟正常显示一共要调整的次数。
示例1
输入:
3
5
[3, 4, 3]
输出:
3
解题方法:模拟
本题关键在于理解题意:
题干的含义是,在除去最后一个月后,其余每个月的最后一天的24点时,时钟上的逻辑时间会超过那个月的最大天数,同时实际时间变为下一个月的第1天。此时逻辑时间和实际时间有差别,需要调整时钟,让逻辑时间重新回到1,使其符合实际时间。
如题中例子所指:
3
5
[3, 4, 3]
- 第1个月第1天,时钟实际值1,符合;
- 第1个月第2天,时钟实际值2,符合;
- 第1个月第3天,时钟实际值3,符合;
- 第2个月第1天,时钟实际值4,不符合,对时钟进行2次加1操作,时钟实际值变为1,符合;
- ......
- 第3个月第1天,时钟实际值5,不符合,对时钟进行1次加1操作,时钟实际值变为1,符合;
- ......
- 第3个月第3天,时钟实际值3,符合;
- 结束,共需要调整3次。
时间复杂度:O(n)
空间复杂度:O(1)
趁热打铁,快来练练手吧:查看题目:坏掉的时钟
在线编程周赛、月赛火热进行中,更有限时答题活动,社区定制卫衣、双肩背包等你来拿~每天都有好礼相送~点击了解周赛详情:在线编程内测中,抢先周赛赢好礼!面试考试前,快来刷刷题!