给定一个数组和一个整数k,找到每个大小为k的连续子阵列的最大值。
示例:
Input :
arr[] = {1, 2, 3, 1, 4, 5, 2, 3, 6}
k = 3
Output :
3 3 4 5 5 5 6
我的代码:
void printKMax(int arr[], int n, int k)
{
int j, max;
for (int i = 0; i <= n-k; i++)
{
max = arr[i];
for (j = 1; j < k; j++)
{
if (arr[i+j] > max)
max = arr[i+j];
}
printf("%d ", max);
}
}
时间复杂度O(n ^ 2)如果通过使用BIT树或使用任何其他数据结构存在一些线性解决方案,即 O(n)时间复杂度以及如何扩展我的算法以找到否。也增加了序列。