Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 74f637d

Browse files
solves combination iii in java
1 parent c1734a1 commit 74f637d

File tree

2 files changed

+38
-1
lines changed

2 files changed

+38
-1
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@
174174
| 211 | [Design Add and Search Words Data Structure](https://leetcode.com/problems/design-add-and-search-words-data-structure) | [![Java](assets/java.png)](src/DesignAddAndSearchWordsDataStructure.java) | |
175175
| 213 | [House Robber II](https://leetcode.com/problems/house-robber-ii) | [![Java](assets/java.png)](src/HouseRobberII.java) | |
176176
| 215 | [Kth Largest Element in an Array](https://leetcode.com/problems/kth-largest-element-in-an-array) | [![Java](assets/java.png)](src/KthLargestElementInAnArray.java) | |
177-
| 216 | [Combination Sum III](https://leetcode.com/problems/combination-sum-iii) | | |
177+
| 216 | [Combination Sum III](https://leetcode.com/problems/combination-sum-iii) | [![Java](assets/java.png)](src/CombinationSumIII.java) | |
178178
| 217 | [Contains Duplicate](https://leetcode.com/problems/contains-duplicate) | [![Java](assets/java.png)](src/ContainsDuplicate.java) [![Python](assets/python.png)](python/contains_duplicate.py) | |
179179
| 219 | [Contains Duplicate II](https://leetcode.com/problems/contains-duplicate-ii) | [![Java](assets/java.png)](src/ContainsDuplicateII.java) [![Python](assets/python.png)](python/contains_duplicate_ii.py) | |
180180
| 220 | [Contains Duplicate III](https://leetcode.com/problems/contains-duplicate-iii) | | |

src/CombinationSumIII.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// https://leetcode.com/problems/combination-sum-iii
2+
// T: O(9^k)
3+
// S: O(k)
4+
5+
import java.util.ArrayList;
6+
import java.util.LinkedList;
7+
import java.util.List;
8+
9+
public class CombinationSumIII {
10+
private final List<List<Integer>> result = new ArrayList<>();
11+
private int sum;
12+
13+
public List<List<Integer>> combinationSum3(int k, int n) {
14+
sum = n;
15+
combinationSum(1, Math.min(sum / 2, 9), 0, k - 1, new LinkedList<>());
16+
return result;
17+
}
18+
19+
private void combinationSum(int start, int end, int currentSum, int k, LinkedList<Integer> current) {
20+
if (k == 0) {
21+
if (currentSum < sum && sum - currentSum >= start && sum - currentSum <= 9) {
22+
current.add(sum - currentSum);
23+
result.add(new ArrayList<>(current));
24+
current.pollLast();
25+
}
26+
return;
27+
}
28+
29+
for (int i = start ; i <= end ; i++) {
30+
current.add(i);
31+
currentSum += i;
32+
combinationSum(i + 1, Math.min((sum - currentSum) / 2, 9), currentSum, k - 1, current);
33+
currentSum -= i;
34+
current.pollLast();
35+
}
36+
}
37+
}

0 commit comments

Comments
 (0)