字节跳动笔试第3题

字节跳动笔试第三题那个游戏,两个测试例都过了,感觉也没有错,但是通过率为0,且提交的速度特别特别慢!!!!!!!#字节跳动##笔试题目#
全部评论
def main(l,r):     sub = list(seq[l:r + 1])     i = 0     score = 0     stack = []     flag = ''     while 0 <= i < len(sub):         ####### 还未有标志位的处理         if flag == "" and sub[i] not in "<>":             score += int(sub[i])             sub[i] = str(int(sub[i]) - 1)             stack.append(int(sub[i]))             i += 1         elif flag == "" and sub[i] == "<":             score += sum(stack)             return score         elif flag == '' and sub[i] == ">":             flag += sub[i]             idx = i             i += 1             stack = []         ########## 标志位为">"         elif flag == ">" and sub[i] not in "<>":             stack.append(int(sub[i]))             sub[i] = str(int(sub[i]) - 1)             i += 1             if i == len(sub):                 score += sum(stack)                 return score         elif flag == ">" and sub[i] == ">":             score += sum(stack)             stack = []             idx = i             i += 1         elif flag == ">" and sub[i] == "<":             # 根据stack里最大的数值来判断删除">"还是"<"             maxx = max(stack)             for j in stack:                 tmp = ((1 + j) * j) // 2                 score += tmp             if maxx % 2 == 0:                 sub = sub[:idx + 1] + sub[i + 1:]                 i = idx + 1                 flag = ">"             else:                 sub = sub[:idx] + sub[i:]                 i = idx - 1                 flag = "<"             stack = []         ########### 标志位为"<"         elif flag == "<" and sub[i] not in "<>":             stack.append(int(sub[i]))             sub[i] = str(int(sub[i]) - 1)             i -= 1             if i == -1:                 score += sum(stack)                 return score         elif flag == "<" and sub[i] == "<":             score += sum(stack)             stack = []             i -= 1         elif flag == "<" and sub[i] == ">":             # 根据stack里最大的数值来判断删除">"还是"<"             maxx = max(stack)             for j in stack:                 tmp = ((1 + j) * j) // 2                 score += tmp             if maxx % 2 != 0:                 sub = sub[:i + 1] + sub[idx + 1:]                 i += 1                 flag = ">"             else:                 sub = sub[:i] + sub[idx:]                 i -= 1                 flag = "<"             stack = []     return score if __name__ == '__main__':     n,m,q = map(int,input().split())     seq = [c for c in input().split()]     for _ in range(q):         a,b = map(int,input().split())         l = a - 1         r = b - 1         if seq[l] == "<":             print(0)         elif l == r:             if seq[l] not in "<>":                 print(seq[l])             else:                 print(0)         else:             print(main(l,r)) 贴一段代码,不需要每次只减一位字符串的数字,优化了(">"..."<")该种情况下的处理,测试案例都通过了,考试的时候没写完,没法测试
点赞 回复 分享
发布于 2019-09-08 22:17
一步步删不行,要看结构,如果一段字符串是封闭的">*****<",这里面方块的分都可以得完,最后的方向取决于这段里面最大的数。如果不是封闭的就直接跑出界。
点赞 回复 分享
发布于 2019-09-08 21:59
我感觉你是不是pop反了,比方说><从左到右,删掉的是>,你好像删掉的是<,题目好像是说(如果当前为》|<且下一个也为这个,那么去掉,我理解的是删掉当前的
点赞 回复 分享
发布于 2019-09-08 21:39
等一个大佬,连续的符号怎么处理呀
点赞 回复 分享
发布于 2019-09-08 21:36
同,蹲一个大佬来解答一下😂
点赞 回复 分享
发布于 2019-09-08 21:34
感觉就按照题目的要求一步一步走就行,也没用什么数据结构 import sys [n,m,q] = list(map(int, sys.stdin.readline().strip().split())) tmp = list(sys.stdin.readline().strip().split()) path = [] for i in tmp:     if i.isdigit():         path.append(int(i))     else:         path.append(i) for _ in range(q):     # 读取每一行     line = sys.stdin.readline().strip()     # 把每一行的数字分隔后转化成int列表     [l, r] = list(map(int, line.split()))     valid = path[l-1: r]     curr = 0     mark = 0     # 1: left, 0: right     orient = 1     # 上一个是'<'或'>'     flag = 0     while curr >= 0 and curr < len(valid):         if valid[curr] == '>':             if flag:                 valid.pop(curr)                 if orient:                     curr = curr                 else:                     curr -= 1             else:                 orient = 1                 curr += 1                 flag = 1         elif valid[curr] == '<':             if flag:                 valid.pop(curr)                 if orient:                     curr = curr                 else:                     curr -= 1             else:                 orient = 0                 curr -= 1                 flag = 1         elif valid[curr] == 0:             valid.pop(curr)             if orient:                 curr = curr             else:                 curr -= 1         else:             mark += valid[curr]             valid[curr] -= 1             flag = 0             if orient:                 curr += 1             else:                 curr -= 1     print(mark)
点赞 回复 分享
发布于 2019-09-08 21:21

相关推荐

老粉都知道小猪猪我很久没更新了,因为秋招非常非常不顺利,emo了三个月了,接下来说一下我的情况吧本人是双非本&nbsp;专业是完全不着计算机边的非科班,比较有优势的是有两段大厂实习,美团和字节。秋招面了50+场泡池子泡死的:滴滴&nbsp;快手&nbsp;去哪儿&nbsp;小鹏汽车&nbsp;不知名的一两个小厂其中字节13场&nbsp;两次3面挂&nbsp;两次2面挂&nbsp;一次一面挂其中有2场面试题没写出来,其他的都是全a,但该挂还是挂,第三次三面才面进去字节,秋招加暑期总共面了22次字节,在字节的面评可以出成书了快手面了8场,2次实习的,通过了但没去,一次2面挂&nbsp;最后一次到录用评估&nbsp;至今无消息滴滴三面完&nbsp;没几天挂了&nbsp;所有技术面找不出2个问题是我回答不上来的,三面还来说我去过字节,应该不会考虑滴滴吧,直接给我干傻了去哪儿一天速通&nbsp;至今无消息小鹏汽车hr&nbsp;至今无消息美团2面挂&nbsp;然后不捞我了,三个志愿全部结束,估计被卡学历了虾皮二面挂&nbsp;这个是我菜,面试官太牛逼了拼多多二面挂&nbsp;3道题也全写了&nbsp;也没问题是回答不出来的&nbsp;泡一周后挂腾讯面了5次&nbsp;一次2面挂&nbsp;三次一面挂,我宣布腾讯是世界上最难进的互联网公司然后还有一些零零散散的中小厂,但是数量比较少,约面大多数都是大厂。整体的战况非常惨烈,面试机会少,就算面过了也需要和各路神仙横向对比,很多次我都是那个被比下去的人,不过这也正常,毕竟谁会放着一个985的硕士不招,反而去招一个双非读化学的小子感觉现在互联网对学历的要求越来越高了,不仅仅要985还要硕士了,双非几乎没啥生存空间了,我感觉未来几年双非想要进大厂开发的难度应该直线上升了,唯一的打法还是从大二刷实习,然后苟个转正,不然要是去秋招大概率是炮灰。而且就我面字节这么多次,已经开始问很多ai的东西了,你一破本科生要是没实习没科研懂什么ai啊,纯纯白给了
不知名牛友_:爸爸
秋招你被哪家公司挂了?
点赞 评论 收藏
分享
评论
点赞
6
分享

创作者周榜

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