Window of exactly k elements slides one position at a time. Build once in O(k), then add right element − remove left element in O(1) per step.
Each element is touched exactly twice — once entering, once leaving. Single pass, constant extra memory (just a few integers).
int maxWindowSum(int[] nums, int k) { int windowSum = 0; // ── Phase 1: Build first window ────────────────────── for (int i = 0; i < k; i++) { windowSum += nums[i]; } int maxSum = windowSum; // ── Phase 2: Slide window one step at a time ───────── for (int i = k; i < nums.length; i++) { windowSum += nums[i] - nums[i - k]; // add right, remove left maxSum = Math.max(maxSum, windowSum); } return maxSum; // O(n) time, O(1) space }