给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。
数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。力扣原文
示例 1:
输入: nums = [4,6,7,7]
输出: [[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6,7,7],[7,7]]
示例 2:
输入: nums = [4,4,3,2,1]
输出: [[4,4]]
解题:
var findSubsequences = function (nums) {
let result=[],set=new Set(),len=nums.length;
const defs=(start,list)=>{
if(list.length>=2){
const str=list.toString()
if(!set.has(str)){
result.push(list.slice())
set.add(str)
}
}
for(let i=start;i<len;i++){
const pre=list[list.length-1]
const cur=nums[i]
if(list.length==0 || pre<=cur){
list.push(cur)
defs(i+1,list)
list.pop()
}
}
}
defs(0,[])
return result
};