BackeasyStackGoogleAmazon

Protocol Pipeline Evaluator 21 Solution

Problem Statement

In a distributed data processing system, a sequence of integer metrics is generated by a pipeline. You are tasked with evaluating the stability of this pipeline by analyzing contiguous sub-sequences of a fixed length. Given an array metrics of length n and an integer windowSize, determine the maximum sum of any contiguous sub-array of length windowSize.

The evaluation is critical for identifying peak load periods in the pipeline. You must compute the sum of the first windowSize elements, then slide the window one position to the right at a time, updating the sum by subtracting the element leaving the window and adding the new element entering the window. Track the maximum sum encountered during this process.

Return the maximum sum of any contiguous sub-array of length windowSize. If windowSize is greater than the length of the array, return 0.

Example 1
Input
metrics = [2, 4, 1, 5, 3], windowSize = 3
Output
10

Explanation: Window 1: [2, 4, 1] -> Sum = 7. Window 2: [4, 1, 5] -> Sum = 10. Window 3: [1, 5, 3] -> Sum = 9. The maximum sum is 10.

Example 2
Input
metrics = [1, 2, 3, 4, 5], windowSize = 2
Output
9

Explanation: Window 1: [1, 2] -> Sum = 3. Window 2: [2, 3] -> Sum = 5. Window 3: [3, 4] -> Sum = 7. Window 4: [4, 5] -> Sum = 9. The maximum sum is 9.

Example 3
Input
metrics = [10, -5, 3, 8, -2], windowSize = 4
Output
16

Explanation: Window 1: [10, -5, 3, 8] -> Sum = 16. Window 2: [-5, 3, 8, -2] -> Sum = 4. The maximum sum is 16.

Example 4
Input
metrics = [7], windowSize = 2
Output
0

Explanation: The window size (2) is greater than the array length (1). Therefore, no valid window exists, and the result is 0.

Constraints

  • 1 <= metrics.length <= 10^5
  • -10^9 <= metrics[i] <= 10^9
  • 1 <= windowSize <= 10^5
Live Compiler1 Free Run Available
Loading Editor...
Test Cases & Output
Click "Run" to test your 1 free compile trial!

🚀 Practice this problem

Run code, get AI hints & track streak

Sign Up Free

Protocol Pipeline Evaluator 21 — Problem Statement & Solution Guide

StackEasyFixed/Dynamic Window
TimeO(n)
|
SpaceO(1)

Problem Description

In a distributed data processing system, a sequence of integer metrics is generated by a pipeline. You are tasked with evaluating the stability of this pipeline by analyzing contiguous sub-sequences of a fixed length. Given an array metrics of length n and an integer windowSize, determine the maximum sum of any contiguous sub-array of length windowSize.

The evaluation is critical for identifying peak load periods in the pipeline. You must compute the sum of the first windowSize elements, then slide the window one position to the right at a time, updating the sum by subtracting the element leaving the window and adding the new element entering the window. Track the maximum sum encountered during this process.

Return the maximum sum of any contiguous sub-array of length windowSize. If windowSize is greater than the length of the array, return 0.

DSA Pattern Breakdown

DSA Pattern Breakdown

"Protocol Pipeline Evaluator 21"

easy

WHY DOES IT MATTER?

Fixed‑size sliding windows turn quadratic scans into linear time, a core performance lever in data‑stream processing.

OPTIMIZATION CHALLENGE

The key is to eliminate recomputation of overlapping segments, reducing work from O(n·k) to O(n).

REAL-WORLD CONNECTION

Network routers compute moving averages of packet latency over a fixed number of samples to detect congestion.

Initialize the first window sum once, then loop from k to n‑1 updating the sum in place for clarity and speed.

COMPLEXITY AT A GLANCE

⏱ Time:O(n)
💾 Space:O(1)

Core Theory — Why This Approach?

The sliding‑window technique transforms the naïve O(n·k) scan of every length‑k sub‑array into a linear pass by reusing the sum of the previous window. By subtracting the element exiting the window and adding the new entrant, each step updates the sum in O(1) time, yielding an overall O(n) algorithm.

A naïve double loop recomputes overlapping portions repeatedly, causing timeouts for large n (up to 10^5 or more). The optimal paradigm leverages the problem’s fixed‑size constraint, turning it into a prefix‑sum or sliding‑window problem, which is a classic example of reducing redundant work through incremental computation.

Interview Questions on This Problem

Q1How does the sliding‑window approach achieve O(n) time for a fixed‑size sub‑array sum?

It updates the current window sum by removing the leftmost element and adding the new rightmost element, avoiding recomputation of the entire sum. Each element is processed a constant number of times.

Q2What edge cases must you handle when implementing this algorithm?

When the window size equals the array length, the answer is the total sum; if it exceeds the length, the problem is undefined or should return an error. Also, arrays with all negative numbers still require correct max tracking.

Q3Can this technique be extended to variable‑size windows, and what changes?

Yes, by maintaining two pointers and adjusting the window size based on a condition (e.g., sum ≤ K). The algorithm then becomes a two‑pointer or dynamic sliding window with O(n) complexity.

Examples

Example 1

Input

metrics = [2, 4, 1, 5, 3], windowSize = 3

Output

10

Explanation: Window 1: [2, 4, 1] -> Sum = 7. Window 2: [4, 1, 5] -> Sum = 10. Window 3: [1, 5, 3] -> Sum = 9. The maximum sum is 10.

Example 2

Input

metrics = [1, 2, 3, 4, 5], windowSize = 2

Output

9

Explanation: Window 1: [1, 2] -> Sum = 3. Window 2: [2, 3] -> Sum = 5. Window 3: [3, 4] -> Sum = 7. Window 4: [4, 5] -> Sum = 9. The maximum sum is 9.

Example 3

Input

metrics = [10, -5, 3, 8, -2], windowSize = 4

Output

16

Explanation: Window 1: [10, -5, 3, 8] -> Sum = 16. Window 2: [-5, 3, 8, -2] -> Sum = 4. The maximum sum is 16.

Example 4

Input

metrics = [7], windowSize = 2

Output

0

Explanation: The window size (2) is greater than the array length (1). Therefore, no valid window exists, and the result is 0.

Constraints

  • 1 <= metrics.length <= 10^5
  • -10^9 <= metrics[i] <= 10^9
  • 1 <= windowSize <= 10^5

Optimal Approach & Strategy

Use a sliding window: compute the first window sum, then for each subsequent position update the sum in O(1) by subtracting the outgoing element and adding the incoming one.

Brute Force Approach

Iterate over every possible start index, sum k elements each time, and keep the maximum; this is O(n·k) time.

Verified Code Solutions

JavaScript Solution
Time: O(n)
function solution(nums, k) {
   // JavaScript solution
   return nums.reduce((a, b) => a + b, 0) + k;
}

Asked in Top Tech Interviews

GoogleAmazonMicrosoft

Solve in Interative Editor

Ready to test your code? Open our built-in compiler, run custom test suites, and see detailed complexity analysis reports instantly.