Subarray Sum - Fixed - Two Pointers / Sliding Window

Here is my solution to the problem.
from typing import List

def subarray_sum_fixed(nums: List[int], k: int) → int:
ans = 0
for i in range(len(nums)-k):
ans = max(ans, sum(nums[i:i+k]) )
return ans

If I’m not mistaken, that’s O(kn) solution, which, still in theory is O(n), but in practice it is slower than original solution because you are unnecessarily running another for-loop on each iteration (the 2nd for being “masked” by sum() call)

max_sum = 0

for r in range(k, len(nums)):
    max_sum = max(max_sum, sum(nums[r-k:r]))
return max_sum

It would be nice to handle edge case scenarios.

example if nums= [10,20,0, 9] and k = 10