1. 平均数为k的最长连续子数组

给定n个正整数组成的数组,求平均数正好等于 k 的最长连续子数组的长度。
参考:
https://juejin.cn/post/7281444213693808697#heading-5

进行python实现

def find_max_length(nums, k):
    prefix_sum = 0
    hashmap = {0: 0}  # 记录前缀和的索引位置
    max_length = 0

    for i in range(len(nums)):
        prefix_sum += nums[i]
        target = prefix_sum - k

        if target in hashmap:
            length = i - hashmap[target] + 1
            max_length = max(max_length, length)

        if prefix_sum not in hashmap:
            hashmap[prefix_sum] = i + 1

    if max_length == 0:
        return -1
    else:
        return max_length

# 读取输入
n, k = map(int, input().split())
nums = list(map(int, input().split()))

# 转换为相加为0的数组解决问题
nums = [num - k for num in nums]

result = find_max_length(nums, 0)
print(result)
全部评论

相关推荐

见见123:简历没有啥问题,是这个社会有问题。因为你刚毕业,没有工作经历,现在企业都不要没有工作经历的。社会病了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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