这道题是一道典型的dfs问题,在构造出满足条件的数之后将其存入结果数组中。

var numsSameConsecDiff = function(N, K) {
    const res = [];
    if (N === 0) {
        return res;
    }
    for (let i = N === 1 ? 0 : 1; i <= 9; i++) {
        helper(N, K, 0, [i], res);
    }
    return res;
};

function helper(N, K, pos, curr, res) {
    if (pos === N-1) {
        res.push(curr.join(''));
        return;
    }

    if (curr[curr.length-1] + K <= 9) {
        curr.push(curr[curr.length-1] + K);
        helper(N, K, pos+1, curr, res);
        curr.pop();
    }
    if (K !== 0 && curr[curr.length-1] - K >= 0) {
        curr.push(curr[curr.length-1] - K);
        helper(N, K, pos+1, curr, res);
        curr.pop();
    }
}

results matching ""

    No results matching ""