Skip to content

Latest commit

 

History

History
37 lines (31 loc) · 873 Bytes

76.combinations.md

File metadata and controls

37 lines (31 loc) · 873 Bytes

组合

题目

思路

  1. 通过递归的方式, 将参数的nk分别-1.
  2. 直到k为1时, 得到所需的第一位可能出现的集合.
  3. k大于1时, 递归所得数组进行循环, 将数组中的最后个值与当前n值之间的全部数据插入进去, 返回数组进入下个递归.
  4. 直到递归结束. 得到结果集
/**
 * @param {number} n
 * @param {number} k
 * @return {number[][]}
 */
var combine = function(n, k) {
  if (k === 1) {
    const results = new Array(n)
    for (let i = 0; i < n; i++) {
      results[i] = [i + 1]
    }
    return results
  }

  const results = []
  const temp = combine(n - 1, k - 1)
  temp.forEach(result => {
    for (let i = result[result.length - 1] + 1; i <= n; i++) {
      results.push([...result, i])
    }
  })

  return results
};