From 5ee64650a3c57e47bc5e77d585d6be40fb9f7ab2 Mon Sep 17 00:00:00 2001 From: hollowcrust <72879387+hollowcrust@users.noreply.github.com> Date: Sat, 7 Oct 2023 21:28:40 +0800 Subject: [PATCH 1/2] Add doctests, type hints; fix bug --- dynamic_programming/minimum_partition.py | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/dynamic_programming/minimum_partition.py b/dynamic_programming/minimum_partition.py index 3daa9767fde4..69e0db7121d7 100644 --- a/dynamic_programming/minimum_partition.py +++ b/dynamic_programming/minimum_partition.py @@ -2,14 +2,25 @@ Partition a set into two subsets such that the difference of subset sums is minimum """ - -def find_min(arr): +def find_min(arr: list[int]) -> int: + """ + >>> find_min([1, 2, 3, 4, 5]) + 1 + >>> find_min([5, 5, 5, 5, 5]) + 5 + >>> find_min([5, 5, 5, 5]) + 0 + >>> find_min([3]) + 3 + >>> find_min([]) + 0 + """ n = len(arr) s = sum(arr) dp = [[False for x in range(s + 1)] for y in range(n + 1)] - for i in range(1, n + 1): + for i in range(n + 1): dp[i][0] = True for i in range(1, s + 1): @@ -17,7 +28,7 @@ def find_min(arr): for i in range(1, n + 1): for j in range(1, s + 1): - dp[i][j] = dp[i][j - 1] + dp[i][j] = dp[i - 1][j] if arr[i - 1] <= j: dp[i][j] = dp[i][j] or dp[i - 1][j - arr[i - 1]] @@ -28,3 +39,7 @@ def find_min(arr): break return diff + +if __name__ == "__main__": + from doctest import testmod + testmod() From 32b7f30b1425ee49a87853390f41e3992c3e1c24 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 7 Oct 2023 13:38:06 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- dynamic_programming/minimum_partition.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dynamic_programming/minimum_partition.py b/dynamic_programming/minimum_partition.py index 69e0db7121d7..e6188cb33b3a 100644 --- a/dynamic_programming/minimum_partition.py +++ b/dynamic_programming/minimum_partition.py @@ -2,6 +2,7 @@ Partition a set into two subsets such that the difference of subset sums is minimum """ + def find_min(arr: list[int]) -> int: """ >>> find_min([1, 2, 3, 4, 5]) @@ -40,6 +41,8 @@ def find_min(arr: list[int]) -> int: return diff + if __name__ == "__main__": from doctest import testmod + testmod()