前缀和+哈希表思路:将输入数组中的元素减去k可将题目转化为“和为0的最长连续子数组”。进一步,为省去重复计算,使用前缀和处理数组。使用哈希表记录前缀和数组中每个值第一次出现的位置,遍历数组找到相同的值便计算距离并更新最大值即可。上述前缀和数组可优化为一个变量。python参考代码:
import s
展开全文
题意给定n个正整数组成的数组,求平均数正好等于 k 的最长连续子数组的长度。思路某个连续子数组的平均数等于k可以转化为区间和等于k*(j-i+1)如果用前缀和维护的话就是sum[j] - sum[i-1] = k * (j-i+1)这里有个很巧妙的地方就是把每个数都减去k,这样就变成了sum[j]-
展开全文
当长为 len 的平均数等于 k 时,代表区间的和为 len*k ,特别的,当 k 为 0 时,区间的和也为0,代表 sum[r] == sum[l-1] ,所以我们可以先简化题意,将每一项都减去 k ,来求区间平均数为 0 的最长区间,那么对于每个区间前缀和 sum ,一定是和之前值等于 sum
展开全文
from itertools import accumulate
n,k=map(int,input().split())
number=list(map(int,input().split()))
for i in range(n):
number[i]-=k
number1=list(a
展开全文