Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

added a problem with solution on sliding window. #8566

Merged
merged 41 commits into from
Apr 18, 2023
Merged
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
ecd0580
added a problem with solution on sliding window.
rohan472000 Mar 28, 2023
ccf8634
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 28, 2023
d621e2e
added hint for return type and parameter
rohan472000 Mar 28, 2023
26fb18a
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 28, 2023
36024f6
Update minimum_size_subarray_sum.py
rohan472000 Mar 28, 2023
2fa46db
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 28, 2023
21136aa
Update minimum_size_subarray_sum.py
rohan472000 Mar 28, 2023
7931904
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 28, 2023
c6fabb4
Update minimum_size_subarray_sum.py
rohan472000 Mar 28, 2023
94d638f
Update minimum_size_subarray_sum.py
rohan472000 Mar 28, 2023
b4d9efc
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 28, 2023
7eb87fe
Update minimum_size_subarray_sum.py
rohan472000 Mar 28, 2023
06915bf
removed un-necessary docs and added 2 test cases
rohan472000 Mar 29, 2023
dfd660c
Rename sliding_window/minimum_size_subarray_sum.py to dynamic_program…
rohan472000 Mar 30, 2023
4bc8033
Update minimum_size_subarray_sum.py
rohan472000 Mar 30, 2023
7476e78
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 30, 2023
5098fbf
Update minimum_size_subarray_sum.py
rohan472000 Mar 30, 2023
a266d4e
Update minimum_size_subarray_sum.py
rohan472000 Mar 30, 2023
55f0882
Update minimum_size_subarray_sum.py
rohan472000 Mar 31, 2023
b111c31
Update minimum_size_subarray_sum.py
rohan472000 Mar 31, 2023
35b2ff2
Update minimum_size_subarray_sum.py
rohan472000 Apr 1, 2023
f8c2d67
Update minimum_size_subarray_sum.py
rohan472000 Apr 1, 2023
5890611
Update dynamic_programming/minimum_size_subarray_sum.py
rohan472000 Apr 1, 2023
615854f
Update dynamic_programming/minimum_size_subarray_sum.py
rohan472000 Apr 1, 2023
254f88e
Update dynamic_programming/minimum_size_subarray_sum.py
rohan472000 Apr 1, 2023
695605c
Update dynamic_programming/minimum_size_subarray_sum.py
rohan472000 Apr 1, 2023
5e5f528
Update dynamic_programming/minimum_size_subarray_sum.py
rohan472000 Apr 1, 2023
57e5e37
Update dynamic_programming/minimum_size_subarray_sum.py
rohan472000 Apr 1, 2023
f00d071
Update dynamic_programming/minimum_size_subarray_sum.py
rohan472000 Apr 1, 2023
34eefad
Update minimum_size_subarray_sum.py
rohan472000 Apr 1, 2023
92e2640
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 1, 2023
d65430e
Fix
cclauss Apr 1, 2023
c20a5b1
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 1, 2023
c88303d
Update minimum_size_subarray_sum.py
rohan472000 Apr 1, 2023
2c69934
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 1, 2023
ae1996c
Update minimum_size_subarray_sum.py
rohan472000 Apr 1, 2023
823287e
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 1, 2023
36d09a0
Update minimum_size_subarray_sum.py
rohan472000 Apr 2, 2023
d3cd162
Update minimum_size_subarray_sum.py
rohan472000 Apr 18, 2023
b67b6f7
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 18, 2023
1e18958
Update minimum_size_subarray_sum.py
cclauss Apr 18, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 62 additions & 0 deletions dynamic_programming/minimum_size_subarray_sum.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
import sys


def minimum_subarray_sum(target: int, numbers: list[int]) -> int:
"""
Return the length of the shortest contiguous subarray in a list of numbers whose sum
is at least target. Reference: https://stackoverflow.com/questions/8269916

>>> minimum_subarray_sum(7, [2, 3, 1, 2, 4, 3])
2
>>> minimum_subarray_sum(7, [2, 3, -1, 2, 4, -3])
4
>>> minimum_subarray_sum(11, [1, 1, 1, 1, 1, 1, 1, 1])
0
>>> minimum_subarray_sum(10, [1, 2, 3, 4, 5, 6, 7])
2
>>> minimum_subarray_sum(5, [1, 1, 1, 1, 1, 5])
1
>>> minimum_subarray_sum(0, [])
0
>>> minimum_subarray_sum(0, [1, 2, 3])
1
>>> minimum_subarray_sum(10, [10, 20, 30])
1
>>> minimum_subarray_sum(7, [1, 1, 1, 1, 1, 1, 10])
1
>>> minimum_subarray_sum(6, [])
0
>>> minimum_subarray_sum(2, [1, 2, 3])
1
>>> minimum_subarray_sum(-6, [])
0
>>> minimum_subarray_sum(-6, [3, 4, 5])
1
>>> minimum_subarray_sum(8, None)
0
>>> minimum_subarray_sum(2, "ABC")
Traceback (most recent call last):
...
ValueError: numbers must be an iterable of integers
"""
if not numbers:
return 0
if target == 0 and target in numbers:
return 0
if not isinstance(numbers, (list, tuple)) or not all(
isinstance(number, int) for number in numbers
):
raise ValueError("numbers must be an iterable of integers")

left = right = curr_sum = 0
min_len = sys.maxsize

while right < len(numbers):
curr_sum += numbers[right]
while curr_sum >= target and left <= right:
min_len = min(min_len, right - left + 1)
curr_sum -= numbers[left]
left += 1
right += 1

return 0 if min_len == sys.maxsize else min_len