题解 | 能量共振

能量共振

https://www.nowcoder.com/practice/9d4af8c0972c4b3fbb1194dbe5e0f9f6

补充一个python版本

def main():
    n = int(input())
    A = list(map(int, input().split()))
    sum_dict = {0: [0]}
    s = 0
    for i, a in enumerate(A, start=1):
        s += a
        sum_dict.setdefault(s, []).append(i)

    # print(sum_dict)
    min_span_l = n
    n_min_spans = 0
    for s in sum_dict:
        ids = sum_dict[s]
        len_ids = len(ids)
        if len_ids > 2:
            for s_id in range(len_ids-2):
                l = ids[s_id+2] - ids[s_id]
                if l < min_span_l:
                    min_span_l = l
                    n_min_spans = 1
                elif l == min_span_l:
                    n_min_spans += 1

    if n_min_spans == 0:
        print(-1, -1)
        return
    print(min_span_l, n_min_spans)


main()

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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