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

点赞 评论 收藏
分享
点赞 评论 收藏
分享
06-04 10:32
安徽大学 单片机 实习僧和BOSS直聘都投了几十家,硬件开发,硬件测试,嵌入式都投了,全是已读不回……我现在考虑想在秋招前速成一个Linux项目,其实现在完全不知道自己要找什么方向的,只能海投了,求大佬们给点意见😭😭😭

点赞 评论 收藏
分享
06-03 16:55
广州工商学院 单片机 点赞 评论 收藏
分享