笔试时间:2023年8月30日 秋招  第一题  题目:智慧打卡系统  某家高科技公司为方便员工省去每日上下班的打卡操作,计划推广使用智慧打卡系统。其运行的原理是系统会记录员工当日进出门禁的时间(员工在上班期间可能会多次进出门禁,格式为24小时制,小时:分钟,“HH:MM”)。现在请编写一个算法,计算员工当日的工作时长(单位:分钟),具体要求如下:  1、单次离岗15min以内,不从工作时长中扣除。  2、12:00至14:00为午休时间,不算工作时长。  3、18:00至19:30为晚饭时间,不算工作明长。  解答要求  时间限制:C/C++1000ms其他语言:2000ms内存限制:C/C++256MB其他语言:512MB  输入描述  第一行:员工当天进门禁的次数n。  第二行:员工当天进门禁的所有时间,以空格分隔。  第三行:员工当天出门禁的次数m。  第四行:员工当天出门禁的所有时间,以空格分隔。  注:0<n,m<100,不存在相同的出入门禁时间,也不存在连续的出门禁或入门禁的情况。  输出描述  当日的工作时长。  样例输入     示例一:   5   07:50 08:50 12:30 13:40 19:50   5   08:45 12:20 13:20 18:30 20:30   示例二:   4   08:30 12:30 14:00 18:20   4   12:00 13:00 16:50 19:00    样例输出     530   解释:员工的工作时段为07:50-12:00,14:00~18:00,19:50~20:30,工作时长为530分钟   示例二:   380   解释员工的工作时段为08:30~12:00,14:00~16:50,工作时长为380分钟    参考题解  模拟  Python:  from datetime import datetimeformat = "%H:%M"n = int(input())intime = [c for c in input().split()]for i in range(n):    intime[i] = datetime.strptime(intime[i], format)m = int(input())outtime = [c for c in input().split()]for i in range(n):    outtime[i] = datetime.strptime(outtime[i], format)wuxiu_s, wuxiu_e = datetime.strptime("12:00", format), datetime.strptime("14:00", format)wanfan_s, wanfan_e = datetime.strptime("18:00", format), datetime.strptime("19:30", format)res = 0tmp1 = []tmp2 = []tmp = []#先处理小于15分钟的情况for i in range(n-1):    if ((intime[i+1] - outtime[i]).total_seconds() / 60) <= 15:        tmp1.append(i+1)        tmp2.append(i)n1, n2 = [], []for i in range(n):    if i not in tmp1:        n1.append(intime[i])    if i not in tmp2:        n2.append(outtime[i])intime, outtime = n1, n2for i in range(len(intime)):    # 午休前进来 午休后出去    if intime[i] < wuxiu_s and (wuxiu_s < outtime[i] < wuxiu_e or outtime[i] > wuxiu_e) :        res += (wuxiu_s - intime[i]).total_seconds()/60    # 午休进来  午休出去    elif wuxiu_s < intime[i] < wuxiu_e and wuxiu_s < outtime[i] < wuxiu_e : continue    #午休进来 午休后 晚饭前出去    elif wuxiu_s < intime[i] < wuxiu_e and wuxiu_e < outtime[i] < wanfan_s :        res += (outtime[i] - wuxiu_e).total_seconds()/60    # 午休进来  晚饭的时候出去    elif wuxiu_s < intime[i] < wuxiu_e and wanfan_s < outtime[i] < wanfan_e :        res += (wanfan_s - wuxiu_e).total_seconds()/60    #午休进来 晚饭后出去    elif wuxiu_s < intime[i] < wuxiu_e and wanfan_e < outtime[i]:        res += (wanfan_s - wuxiu_e + outtime[i
点赞 14
评论 2
全部评论

相关推荐

02-12 20:22
重庆大学 Java
字节暑期刚入职四天,因为是年前,所以很多正职都放假走了,也就没有给我分配mt,然后有一个老哥在我来的时候给我发了一个landing手册,然后还有关于部门业务的白皮书,还有一些业务代码。然后本人是java面的,进来第一次接触go语言 前面几天熟悉了一下go的语法和go的框架,可以读但是还不太会写,然后业务白皮书也看的很头疼,包括landing手册里要了解的很多东西说实话我看文档真的快看死了,一个嵌套一个,问题是我还完全不知道咋用这个我了解的东西,还有就是那个项目代码,那个老哥喊我去写写单测,熟悉一下go的语法,但也进行的很困难(这是我第一段实习,之前都是springboot那一套,真不太熟悉这个)想问问大家的建议,就是我从现在开始到在开年回来之前应该做些什么,我目前就一个想法 就是复现一个landing手册上的go框架小项目 就是相当于帮自己锻炼锻炼怎么写go 或者各位大佬有没有更好的锻炼go语法的建议还有就是大家都在说vibe coding,那我应该怎么锻炼自己使用ai的能力,感觉我除了给一些需求然后它给我生成代码,好像就没别的用法了,那些什么工作流、拆解、skill啥的都不知道从哪一个地方开始,包括我现在正在实习,不知道精力该怎么分配,去网上想找找关于agent开发的一些学习流程,说实话,众说纷纭,有的是从python开始打基础然后系统学那些rag prompt langchain mcp等等,有的是说直接找一个github上的ai项目然后反复问ai,我确实有点迷茫,恳求各位大佬能留下你们宝贵的建议,我一定认真反复深刻学习有一说一 我觉得字节饭挺好吃的!
双非后端失败第N人:1. go语言我建议你让ai带着你先把基本语法速通了,然后再去用go重新刷你以前刷过的leetcode,这样熟悉起来很快 2. 直接看你们组go项目,里面用***比较复杂,然后把每一个语法现象都喂给ai,一点点看
字节跳动公司福利 1371人发布
点赞 评论 收藏
分享
01-19 15:14
已编辑
延安大学 C++
累死的一条狗:我说白了这种玩意你直接点举报就完事了在给他挂出来
找工作以来,你最看不惯_...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务