代码随想录算法训练营第二十四天 | 77.组合

49 阅读1分钟

回溯讲解

77.组合

77. 组合

  • 剪枝:当剩余取数区间已经小于要求的组合大小,可直接略去
var combine = function(n, k) {
    const res = [];

    const backTrack = (arr, start) => {
        if (arr.length === k) {
            res.push([...arr]);
            return;
        }
        
        // 剪枝:循环终止条件变为 n - (k - arr.length) + 1
        for (let i=start; i<=n; i++) {
            arr.push(i);
            backTrack(arr, i+1);
            arr.pop(i);
        }
    }

    backTrack([], 1);
    return res;
};