Skip to content

递增子序列 #171

Open
Open
@TieMuZhen

Description

@TieMuZhen

image

/**
 * @param {number[]} nums
 * @return {number[][]}
 */
//  
let res = [], sub = [];
function backtracking(nums, startIndex){
    if(sub.length >= 2){
        res.push([...sub]);
        // 注意这里不要加return,因为要取树上的所有节点
    }
    // used 是记录本层元素是否重复使用,新的一层used都会重新定义(清空),所以要知道used只负责本层!
    let used = new Array(201).fill(0); 
    for(let i = startIndex; i < nums.length; i++){
        if(sub.length != 0 && nums[i] < sub[sub.length - 1]) continue; // 这里使用数组来进行去重操作,题目说数值范围[-100, 100]
        if(used[nums[i] + 100] == 1) continue; // 记录这个元素在本层用过了,本层后面不能再用了
        used[nums[i] + 100] = 1; // 去重效果,因为7+100 和7+100冲突
        sub.push(nums[i]);
        backtracking(nums, i + 1);
        sub.pop();
    }
}
var findSubsequences = function(nums) {
    res = [];
    used = new Array(nums.length).fill(false);
    backtracking(nums, 0);
    return res;
};

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions