华为笔试求解答!!

今天刚刚做完华为的笔试,其中有一道题是这样的,输入一串数字,e.g.10 120 10 20 10 10 50,每个数字代表在页面i所停留的时间(秒),i为index。分析规则为:每分钟(60秒)之内阅读完的页数不能大于4页。那这串数字距离,这个学生第一分钟学完1页,第二分钟学完0页,第三分钟学完5页,第四分钟学完1页,不满足要求,所以返回0,满足则返回1。
输入为:
3  //记录个数,大于0小于10000
//后面每一行第一个数代表有几页,后面则是每页停留时间
2  10 10
4  10 15  20 30
5  10 10 10 10 10
输出为:
1
1
0
我的代码是
import sys

if __name__ == "__main__":
    # 读取第一行的n
    n = int(sys.stdin.readline().strip())
    minute = 60
    for i in range(n):
        cnt = 1#第几分钟
        result = []
        sum_time = 0
        # 读取每一行
        line = sys.stdin.readline().strip()
        # 把每一行的数字分隔后转化成int列表
        values = list(map(int, line.split()))
        #go through each line
        for j in range(values[0]):
            sum_time += values[j+1] #累计时间
            while sum_time >= cnt*minute:  #只要超过60s,120s等
                result.append(j-sum(result))#记录每分钟读了几页
                cnt += 1
            if j == values[0]-1 and sum_time < cnt*minute:#手动处理最后一页
                result.append(j+1-sum(result))
        if (all(ele < 4 for ele in result)):
            print(1)
        else:
            print(0)
        
我通过了题目给的自测,也自己试了一些boundry condition,但是我的case通过率是0.00%
百思不得其解到底哪里出错了,求大佬指点!
#Python##笔试题目##华为##秋招#
全部评论
你的输入有问题。。你这个只能输入一组数据。人家要求的是能够输入多组数据的 给你一个python输入模板 while True:     try:         n = int(input().strip())         arr = []         for i in range(n):             tmp = list(map(int, input().strip().split()))             arr.append(tmp)         print(arr)     except:         break
点赞 回复
分享
发布于 2020-07-23 00:34
楼上正解
点赞 回复
分享
发布于 2020-07-23 01:51
联易融
校招火热招聘中
官网直投
请问是21届的校招提前批么?
点赞 回复
分享
发布于 2020-07-23 15:39

相关推荐

投递腾讯等公司10个岗位
点赞 评论 收藏
转发
1 23 评论
分享
牛客网
牛客企业服务