l <= size <= r 길이의 부분원소의 합이 0보다 큰 가장 작은 합을 도출
정답이 없을 시 -1 출력
Time complexity:
Space complexity:
class Solution:
def minimumSumSubarray(self, nums: List[int], l: int, r: int) -> int:
n = len(nums)
# prefix sums
pre = [0] * (n + 1)
for i in range(n):
pre[i+1] = pre[i] + nums[i]
answer = inf
# check all lengths
for length in range(l, r+1):
for i in range(n - length + 1):
s = pre[i+length] - pre[i]
if s > 0:
answer = s if s<answer else answer
#for ws in range(l,r+1):
# for i in range(n-ws+1):
# s = sum(nums[i:i+ws])
# if s > 0:
# answer = min(answer, s)
return answer if answer != float('inf') else -1