Combination Sum III - Array - Medium - LeetCode
💻 coding

Combination Sum III - Array - Medium - LeetCode

1 min read 280 words
1 min read
ShareWhatsAppPost on X
  • 1The task is to find combinations of k numbers that sum to n using numbers 1 through 9, each at most once.
  • 2Valid combinations must be unique and can be returned in any order, with examples illustrating different inputs and outputs.
  • 3The solution involves a recursive helper function with a time complexity of O(2^n) and a space complexity of O(n).

AI-generated summary · May not capture all nuances

Key Insight
AskGif

"The task is to find combinations of k numbers that sum to n using numbers 1 through 9, each at most once."

Combination Sum III - Array - Medium - LeetCode

Find all valid combinations of k numbers that sum up to n such that the following conditions are true:

Only numbers 1 through 9 are used. Each number is used at most once. Return a list of all possible valid combinations. The list must not contain the same combination twice, and the combinations may be returned in any order.

Example 1:

Input: k = 3, n = 7 Output: [[1,2,4]] Explanation: 1 + 2 + 4 = 7 There are no other valid combinations. Example 2:

Input: k = 3, n = 9 Output: [[1,2,6],[1,3,5],[2,3,4]] Explanation: 1 + 2 + 6 = 9 1 + 3 + 5 = 9 2 + 3 + 4 = 9 There are no other valid combinations. Example 3:

Input: k = 4, n = 1 Output: [] Explanation: There are no valid combinations. [1,2,1] is not valid because 1 is used twice. Example 4:

Input: k = 3, n = 2 Output: [] Explanation: There are no valid combinations. Example 5:

Input: k = 9, n = 45 Output: [[1,2,3,4,5,6,7,8,9]] Explanation: 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45 ​​​​​​​There are no other valid combinations.

Constraints:

2 <= k <= 9 1 <= n <= 60

public class Solution {
 IList<IList<int>> result = new List<IList<int>>();
 public IList<IList<int>> CombinationSum3(int k, int n) {
 var list = new List<int>();
 Helper(k,n,9,1, list);
 
 return result;
 }
 
 private void Helper(int k, int sum, int n, int start, List<int> list){
 if(k==0){
 if(sum==0){
 var temp = new List<int>(list);
 result.Add(temp);
 }
 return; 
 }
 
 if(sum<0){
 return;
 }
 
 for(int i=start;i<=n;i++){
 list.Add(i);
 Helper(k-1,sum-i,n,i+1,list);
 list.RemoveAt(list.Count()-1);
 }
 
 }
}

Time Complexity: O(2^n)

Space Complexity: O(n)

Enjoyed this article?

Share it with someone who'd find it useful.

ShareWhatsAppPost on X

sumitc91

Published on 18 November 2020 · 1 min read · 280 words

Part of AskGif Blog · coding

You might also like

Combination Sum III - Array - Medium - LeetCode | AskGif Blog