@@ -5,34 +5,39 @@ def minimum_subarray_sum(target: int, numbers: list[int]) -> int:
5
5
"""
6
6
Returns the length of the shortest contiguous subarray
7
7
in a list of numbers whose sum is at least target.
8
- >>> minimum_subarray_sum(7, [2, 3, 1, 2, 4, 3])
9
- 2
10
- >>> minimum_subarray_sum(7, [2, 3, -1, 2, 4, -3])
11
- 4
12
- >>> minimum_subarray_sum(11, [1, 1, 1, 1, 1, 1, 1, 1])
13
- 0
14
- >>> minimum_subarray_sum(10, [1, 2, 3, 4, 5, 6, 7])
15
- 2
16
- >>> minimum_subarray_sum(5, [1, 1, 1, 1, 1, 5])
17
- 1
18
- >>> minimum_subarray_sum(0, [])
19
- 0
20
- >>> minimum_subarray_sum(10, [10, 20, 30])
21
- 1
22
- >>> minimum_subarray_sum(7, [1, 1, 1, 1, 1, 1, 10])
23
- 1
24
- >>> minimum_subarray_sum(6, [])
25
- 0
26
- >>> minimum_subarray_sum(2, [1, 2, 3])
27
- 1
28
- >>> minimum_subarray_sum(-6, [])
29
- 0
30
- >>> minimum_subarray_sum(8, None)
31
- 0
32
- >>> minimum_subarray_sum(2, "ABC")
33
- Traceback (most recent call last):
8
+
9
+ >>> minimum_subarray_sum(7, [2, 3, 1, 2, 4, 3])
10
+ 2
11
+ >>> minimum_subarray_sum(7, [2, 3, -1, 2, 4, -3])
12
+ 4
13
+ >>> minimum_subarray_sum(11, [1, 1, 1, 1, 1, 1, 1, 1])
14
+ 0
15
+ >>> minimum_subarray_sum(10, [1, 2, 3, 4, 5, 6, 7])
16
+ 2
17
+ >>> minimum_subarray_sum(5, [1, 1, 1, 1, 1, 5])
18
+ 1
19
+ >>> minimum_subarray_sum(0, [])
20
+ 0
21
+ >>> minimum_subarray_sum(0, [1, 2, 3])
22
+ 0
23
+ >>> minimum_subarray_sum(10, [10, 20, 30])
24
+ 1
25
+ >>> minimum_subarray_sum(7, [1, 1, 1, 1, 1, 1, 10])
26
+ 1
27
+ >>> minimum_subarray_sum(6, [])
28
+ 0
29
+ >>> minimum_subarray_sum(2, [1, 2, 3])
30
+ 1
31
+ >>> minimum_subarray_sum(-6, [])
32
+ 0
33
+ >>> minimum_subarray_sum(-6, [3, 4, 5])
34
+ 0
35
+ >>> minimum_subarray_sum(8, None)
36
+ 0
37
+ >>> minimum_subarray_sum(2, "ABC")
38
+ Traceback (most recent call last):
34
39
...
35
- ValueError: numbers must be an iterable of integers
40
+ ValueError: numbers must be an iterable of integers
36
41
"""
37
42
38
43
if not numbers :
@@ -41,9 +46,9 @@ def minimum_subarray_sum(target: int, numbers: list[int]) -> int:
41
46
isinstance (number , int ) for number in numbers
42
47
):
43
48
raise ValueError ("numbers must be an iterable of integers" )
49
+
44
50
left = right = curr_sum = 0
45
51
min_len = sys .maxsize
46
-
47
52
for right , number in enumerate (numbers ):
48
53
curr_sum += number
49
54
while curr_sum >= target :
@@ -52,3 +57,9 @@ def minimum_subarray_sum(target: int, numbers: list[int]) -> int:
52
57
left += 1
53
58
54
59
return 0 if min_len == sys .maxsize else min_len
60
+
61
+
62
+ if __name__ == "__main__" :
63
+ from doctest import testmod
64
+
65
+ testmod ()()
0 commit comments