Combination Sum III
Description
Find all possible combinations of k numbers that add up to a number n, given that only numbers from 1 to 9 can be used and each combination should be a unique set of numbers.
Note:
- All numbers will be positive integers.
- The solution set must not contain duplicate combinations.
Example 1:
Input: k = 3, n = 7 Output: [[1,2,4]]
Example 2:
Input: k = 3, n = 9 Output: [[1,2,6], [1,3,5], [2,3,4]]
Solution(javascript)
// /** 1.1: Backtracking
//  * @param {number} k
//  * @param {number} n
//  * @return {number[][]}
//  */
// const combinationSum3 = function (k, n) {
//   const result = []
//   const aux = (start, current, sum) => {
//     if (current.length > k) {
//       return
//     }
//     if (current.length === k) {
//       if (sum === n) {
//         result.push(current)
//         return
//       }
//       return
//     }
//     for (let i = start; i <= 9; i++) {
//       aux(i + 1, [...current, i], sum + i)
//     }
//   }
//   for (let i = 1; i <= 9; i++) {
//     aux(i + 1, [i], i)
//   }
//   return result
// }
/** 1.2: Backtracking
 * @param {number} k
 * @param {number} n
 * @return {number[][]}
 */
const combinationSum3 = function (k, n) {
  const result = []
  const aux = (start, current, sum) => {
    if (current.length > k) {
      return
    }
    if (current.length === k) {
      if (sum === n) {
        result.push([...current])
        return
      }
      return
    }
    for (let i = start; i <= 9; i++) {
      current.push(i)
      aux(i + 1, current, sum + i)
      current.pop(i)
    }
  }
  for (let i = 1; i <= 9; i++) {
    aux(i + 1, [i], i)
  }
  return result
}