Tcdian / keep

今天不想做,所以才去做。
MIT License
5 stars 1 forks source link

491. Increasing Subsequences #313

Open Tcdian opened 3 years ago

Tcdian commented 3 years ago

491. Increasing Subsequences

给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。

Example

Input: [4, 6, 7, 7]
Output: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]

Note

Tcdian commented 3 years ago

Solution

/**
 * @param {number[]} nums
 * @return {number[][]}
 */
var findSubsequences = function(nums) {
    const sub = [];
    const unique = new Set();
    const result = [];
    backtracking(0);
    return result;

    function backtracking(index) {
        if (index >= nums.length) {
            if (sub.length >= 2 && !unique.has(sub.join())) {
                result.push([...sub]);
                unique.add(sub.join());
            }
            return;
        }
        if (sub.length === 0 || sub[sub.length - 1] <= nums[index]) {
            sub.push(nums[index]);
            backtracking(index + 1);
            sub.pop();
        }
        backtracking(index + 1);
    }
};
function findSubsequences(nums: number[]): number[][] {
    const sub: number[] = [];
    const unique = new Set();
    const result: number[][] = [];
    backtracking(0);
    return result;

    function backtracking(index: number) {
        if (index >= nums.length) {
            if (sub.length >= 2 && !unique.has(sub.join())) {
                result.push([...sub]);
                unique.add(sub.join());
            }
            return;
        }
        if (sub.length === 0 || sub[sub.length - 1] <= nums[index]) {
            sub.push(nums[index]);
            backtracking(index + 1);
            sub.pop();
        }
        backtracking(index + 1);
    }
};