Skip to content

Commit 2309060

Browse files
rohan472000pre-commit-ci[bot]cclauss
authored andcommitted
added a problem with solution on sliding window. (TheAlgorithms#8566)
* added a problem with solution on sliding window. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * added hint for return type and parameter * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update minimum_size_subarray_sum.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update minimum_size_subarray_sum.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update minimum_size_subarray_sum.py * Update minimum_size_subarray_sum.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update minimum_size_subarray_sum.py * removed un-necessary docs and added 2 test cases * Rename sliding_window/minimum_size_subarray_sum.py to dynamic_programming/minimum_size_subarray_sum.py * Update minimum_size_subarray_sum.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update minimum_size_subarray_sum.py * Update minimum_size_subarray_sum.py * Update minimum_size_subarray_sum.py * Update minimum_size_subarray_sum.py * Update minimum_size_subarray_sum.py * Update minimum_size_subarray_sum.py * Update dynamic_programming/minimum_size_subarray_sum.py Co-authored-by: Christian Clauss <cclauss@me.com> * Update dynamic_programming/minimum_size_subarray_sum.py Co-authored-by: Christian Clauss <cclauss@me.com> * Update dynamic_programming/minimum_size_subarray_sum.py Co-authored-by: Christian Clauss <cclauss@me.com> * Update dynamic_programming/minimum_size_subarray_sum.py Co-authored-by: Christian Clauss <cclauss@me.com> * Update dynamic_programming/minimum_size_subarray_sum.py Co-authored-by: Christian Clauss <cclauss@me.com> * Update dynamic_programming/minimum_size_subarray_sum.py Co-authored-by: Christian Clauss <cclauss@me.com> * Update dynamic_programming/minimum_size_subarray_sum.py Co-authored-by: Christian Clauss <cclauss@me.com> * Update minimum_size_subarray_sum.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Fix * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update minimum_size_subarray_sum.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update minimum_size_subarray_sum.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update minimum_size_subarray_sum.py * Update minimum_size_subarray_sum.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Christian Clauss <cclauss@me.com>
1 parent 23951a1 commit 2309060

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import sys
2+
3+
4+
def minimum_subarray_sum(target: int, numbers: list[int]) -> int:
5+
"""
6+
Return the length of the shortest contiguous subarray in a list of numbers whose sum
7+
is at least target. Reference: https://stackoverflow.com/questions/8269916
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+
1
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+
1
35+
>>> minimum_subarray_sum(8, None)
36+
0
37+
>>> minimum_subarray_sum(2, "ABC")
38+
Traceback (most recent call last):
39+
...
40+
ValueError: numbers must be an iterable of integers
41+
"""
42+
if not numbers:
43+
return 0
44+
if target == 0 and target in numbers:
45+
return 0
46+
if not isinstance(numbers, (list, tuple)) or not all(
47+
isinstance(number, int) for number in numbers
48+
):
49+
raise ValueError("numbers must be an iterable of integers")
50+
51+
left = right = curr_sum = 0
52+
min_len = sys.maxsize
53+
54+
while right < len(numbers):
55+
curr_sum += numbers[right]
56+
while curr_sum >= target and left <= right:
57+
min_len = min(min_len, right - left + 1)
58+
curr_sum -= numbers[left]
59+
left += 1
60+
right += 1
61+
62+
return 0 if min_len == sys.maxsize else min_len

0 commit comments

Comments
 (0)