今天刷到了一到力扣题: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版权协议,转载请附上原文出处链接和本声明。