笔试算法模拟题精解之“坏掉的时钟”

简介: 本题关键在于理解题意。

【在线编程产品介绍】

阿里云开发者社区在线编程:

免费刷题大神器,助你拿到好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)

趁热打铁,快来练练手吧:查看题目:坏掉的时钟

在线编程周赛、月赛火热进行中,更有限时答题活动,社区定制卫衣、双肩背包等你来拿~每天都有好礼相送~点击了解周赛详情:在线编程内测中,抢先周赛赢好礼!面试考试前,快来刷刷题!

APPbanner784-312.png

上一篇:笔试算法模拟题精解之”斐波那契字符数”
下一篇:笔试算法模拟题精解之“完美排列”

相关文章
|
6月前
|
算法
基于最小二乘正弦拟合算法的信号校正matlab仿真,校正幅度,频率以及时钟误差,输出SNDR,SFDR,ENOB指标
基于最小二乘正弦拟合算法的信号校正matlab仿真,校正幅度,频率以及时钟误差,输出SNDR,SFDR,ENOB指标
|
15天前
|
算法
时钟置换算法
【10月更文挑战第25天】时钟置换算法是一种简单而有效的页面置换算法,它通过使用位标志和环形链表的结构,在一定程度上平衡了算法的复杂性和性能表现。虽然它存在一些局限性,但通过改进和与其他算法的结合,可以在不同的系统环境中发挥重要作用,提高虚拟内存管理的效率和系统的整体性能。
43 8
|
15天前
|
机器学习/深度学习 算法 数据挖掘
提高时钟置换算法的性能
【10月更文挑战第25天】通过上述一种或多种方法的综合应用,可以在不同程度上提高时钟置换算法的性能,使其更好地适应各种复杂的系统环境和应用场景,提高虚拟内存管理的效率和系统的整体性能。
35 5
|
6月前
|
算法 搜索推荐 Java
Java数据结构 -- 常见算法分析(查找算法、排序算法)精解详解!!!
Java数据结构 -- 常见算法分析(查找算法、排序算法)精解详解!!!
60 0
|
6月前
|
编解码 算法 前端开发
往年 | 大疆雷达算法校招笔试题目解析
往年 | 大疆雷达算法校招笔试题目解析
483 1
|
算法
压缩算法 【腾讯2020校园招聘-后台&综合-第一次笔试 】
压缩算法 【腾讯2020校园招聘-后台&综合-第一次笔试 】
86 0
|
算法 网络协议
骚戴独家笔试---算法篇4
骚戴独家笔试---算法篇4
62 1
|
存储 算法
骚戴独家笔试---算法篇3
骚戴独家笔试---算法篇3
203 0
骚戴独家笔试---算法篇3
|
存储 算法
骚戴独家笔试---算法篇2
骚戴独家笔试---算法篇2
53 0
骚戴独家笔试---算法篇2
|
算法 JavaScript 前端开发
温习数据算法—罗盘时钟
温习数据算法—罗盘时钟