|
| 1 | +import sys |
| 2 | + |
1 | 3 | def minimum_subarray_sum(target: int, numbers: list[int]) -> int:
|
2 | 4 | """
|
3 | 5 | Returns the length of the shortest contiguous subarray
|
4 | 6 | in a list of numbers whose sum is at least target.
|
5 |
| -
|
6 |
| - >>> minsubarraysum(7, [2, 3, 1, 2, 4, 3]) |
| 7 | + >>> minimum_subarray_sum(7, [2, 3, 1, 2, 4, 3]) |
7 | 8 | 2
|
8 |
| - >>> minsubarraysum(7, [2, 3, -1, 2, 4, -3]) |
| 9 | + >>> minimum_subarray_sum(7, [2, 3, -1, 2, 4, -3]) |
9 | 10 | 4
|
10 |
| - >>> minsubarraysum(11, [1, 1, 1, 1, 1, 1, 1, 1]) |
| 11 | + >>> minimum_subarray_sum(11, [1, 1, 1, 1, 1, 1, 1, 1]) |
11 | 12 | 0
|
12 |
| - >>> minsubarraysum(10, [1, 2, 3, 4, 5, 6, 7]) |
| 13 | + >>> minimum_subarray_sum(10, [1, 2, 3, 4, 5, 6, 7]) |
13 | 14 | 2
|
14 |
| - >>> minsubarraysum(5, [1, 1, 1, 1, 1, 5]) |
| 15 | + >>> minimum_subarray_sum(5, [1, 1, 1, 1, 1, 5]) |
15 | 16 | 1
|
16 |
| - >>> minsubarraysum(0, []) |
| 17 | + >>> minimum_subarray_sum(0, []) |
17 | 18 | 0
|
18 |
| - >>> minsubarraysum(10, [10, 20, 30]) |
| 19 | + >>> minimum_subarray_sum(10, [10, 20, 30]) |
| 20 | + 1 |
| 21 | + >>> minimum_subarray_sum(7, [1, 1, 1, 1, 1, 1, 10]) |
19 | 22 | 1
|
20 |
| - >>> minsubarraysum(7, [1, 1, 1, 1, 1, 1, 10]) |
| 23 | + >>> minimum_subarray_sum(6, []) |
| 24 | + 0 |
| 25 | + >>> minimum_subarray_sum(2, [1, 2, 3]) |
21 | 26 | 1
|
| 27 | + >>> minimum_subarray_sum(-6, []) |
| 28 | + 0 |
| 29 | + >>> minimum_subarray_sum(8, None) |
| 30 | + 0 |
| 31 | + >>> minimum_subarray_sum(2, "ABC") |
| 32 | + Traceback (most recent call last): |
| 33 | + ... |
| 34 | + ValueError: numbers must be an iterable of integers |
22 | 35 | """
|
23 | 36 |
|
24 | 37 | if not numbers:
|
25 | 38 | return 0
|
| 39 | + if not isinstance(numbers, (list, tuple)) or not all( |
| 40 | + isinstance(number, int) for number in numbers |
| 41 | + ): |
| 42 | + raise ValueError("numbers must be an iterable of integers") |
26 | 43 | left = right = curr_sum = 0
|
27 | 44 | min_len = sys.maxsize
|
28 | 45 |
|
|
0 commit comments