二元数组去重方法

今天刷到了一到力扣题:491.递增子序列

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

示例:

输入: [4, 6, 7, 7]
输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]
说明:

给定数组的长度不会超过15。
数组中的整数范围是 [-100,100]。
给定数组中可能包含重复数字,相等的数字应该被视为递增的一种情况。

我的题解:



var findSubsequences = function(nums) {
    let result = []
    let path = []
    let len = nums.length
    backtracking(0)
    // 二维数组的去重
    function deduplicate(array) {
        const set = new Set(array.map(JSON.stringify));
        return Array.from(set).map(JSON.parse);
    }
      
    return deduplicate(result)
    function backtracking(startIndex) { 
        if(path.length > 1){
            result.push([...path])
        }
        let uset = []
        for(let i = startIndex;i < len;i ++){
            if((path.length > 0 && nums[i] < path[path.length - 1])) {
                continue
            }
            path.push(nums[i])
            backtracking(i + 1)
            path.pop()
        }
    }
};

console.log(findSubsequences([4,6,7,7]))

这里涉及到一次二元数据去重:

function deduplicate(array) {
    // JSON.stringify加上双引号
    const set = new Set(array.map(JSON.stringify));
    // set没有map方法,只有Array有
    // JSON.parse去掉双引号
    return Array.from(set).map(JSON.parse);
}
      

版权声明:本文为weixin_43850639原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。