最大K长度子数组 C++题解

最大K长度子数组

内存限制: 256 MiB 时间限制: 1000 ms 标准输入输出 题目类型: 传统 评测方式: 文本比较

题目描述

给定一个整数序列 ,请你计算长度为 K 的最大连续子数组

注意:这里的长度为 K,表示连续子数组的元素个数为 K,这里的最大是指 K 个元素的和最大

输入格式

第一行包含两个整数:N,K

接下来的一行,共 N 个整数,表示给定的整数序列 

输出格式

一个整数,表示长度为 K 的最大连续子序列的和

样例

样例输入

复制6 3
-1 2 -6 5 -5 6

样例输出

复制6

数据范围与提示

1 ≤ N ≤ 1000000;

1 ≤ K ≤ N;

序列元素的绝对值不超过 2 的 30 次方

#include 
using namespace std;
const int maxn = 1e6 + 5;
long long n, k, q;
long long Max = LLONG_MIN;
long long a[maxn], sum[maxn]; 
int main() {
	scanf("%d %d", &n, &k);
	for(int i = 1; i <= n; i++) {
		scanf("%lld", &a[i]);
		sum[i] = sum[i - 1] + a[i];
	} 
	for(int i = 1; i <= n - k + 1; i++) {
		q = sum[i + k - 1] - sum[i - 1];
		if(q > Max) {
			Max = q;
		} 
	} 
	printf("%lld", Max);
	return 0;
} 

你可能感兴趣的:(前缀和与差分,c++,开发语言)