Skip to content

Commit 183ef4f

Browse files
committed
Refactor: Improve clarity and efficiency of subset sum algorithm
1 parent 8934bab commit 183ef4f

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

dynamic_programming/sum_of_subset.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,18 @@ def is_sum_subset(arr: list[int], required_sum: int) -> bool:
2121

2222
for i in range(1, arr_len + 1):
2323
for j in range(1, required_sum + 1):
24-
if arr[i - 1] > j:
24+
current_item_value = arr[i - 1]
25+
26+
# current_item_value is greater than j
27+
if current_item_value > j:
2528
subset[i][j] = subset[i - 1][j]
26-
if arr[i - 1] <= j:
27-
subset[i][j] = subset[i - 1][j] or subset[i - 1][j - arr[i - 1]]
29+
# replace an 'if' in an 'else' to make the fluxe more clean
30+
else:
31+
without_current_item = subset[i - 1][j]
32+
33+
sum_required_if_item_taken = j - current_item_value
34+
without_current_item = subset[i - 1][sum_required_if_item_taken]
35+
subset[i][j] = without_current_item or without_current_item
2836

2937
return subset[arr_len][required_sum]
3038

0 commit comments

Comments
 (0)