491. 递增子序列

题目链接

分析:

依然是一个“树层去重,树枝不去重”的题目,但是相比于90题,其减枝完全依赖对状态的记录,不能直接通过先排序的方式简化,因此难度更高一点。

function findSubsequences(nums: number[]): number[][] {
    const result: number[][] = [];
    const backtracking = (startIndex: number, nums: number[], curPath: number[]) => {
        const usedSet = new Set();
        if(curPath.length>=2) {
            result.push([...curPath]);
        }
        for(let i=startIndex;i<nums.length;i++) {
            if((curPath.length===0 || nums[i] >= curPath[curPath.length-1]) && !usedSet.has(nums[i])) {
                curPath.push(nums[i]);
                backtracking(i+1, nums, curPath);
                curPath.pop();
            }
            usedSet.add(nums[i]);
        }
    };
    backtracking(0, nums, []);
    return result;
};

console.log(findSubsequences([4,6,7,7]));
console.log(findSubsequences([4,4,3,2,1]));

results matching ""

    No results matching ""