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)
参考:
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)
全部评论
相关推荐


点赞 评论 收藏
分享