携程9月7日笔试(第四题)

第四题解法:考试时没做出来。复杂度大约是NlogN(猜的,但肯定比N^2小得多).

s = "10000000"
n = len(s)
length = [0] * (len(s))

for i in range(n - 1, -1, -1):
    if s[i] == "1":
        length[i] = 0
    else:
        length[i] = 1
        begin = i + 1
        while begin < n and s[begin] == "0":
            if begin + length[begin] < n - 1:
                length[i] += length[begin] + 1
                begin += length[begin] + 1
            else:
                length[i] += length[begin]
                break
# print(s)
# print(length)
print(sum(length))

全部评论
从左往右一次遍历,计算0的连续累加和,如果遇到1重新计数。把所有累加和加起来就是答案
1 回复 分享
发布于 2023-09-07 22:20 上海
我测试用例都对了 然后提交用例全超时 真恶心 好歹要给几个简单条件的吧
点赞 回复 分享
发布于 2023-09-07 22:10 上海

相关推荐

不愿透露姓名的神秘牛友
07-15 17:46
暑期就挂了,秋招还有机会吗
大聪明777:研发提前批,14号刚开的,官网上面的配图上有写。提前批没过的话,秋招还可以投,不过前面的笔试/面试记录会被保留,供秋招参考
26届校招投递进展
点赞 评论 收藏
分享
06-12 16:23
已编辑
长安大学 C++
点赞 评论 收藏
分享
07-17 11:50
门头沟学院 Java
投递腾讯等公司7个岗位
点赞 评论 收藏
分享
评论
3
2
分享

创作者周榜

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