跳到主要内容

491.非递减子序列

链接:491.非递减子序列
难度:Medium
标签:位运算、数组、哈希表、回溯
简介:给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是 2。

题解 1 - typescript

  • 编辑时间:2020-08-25
  • 执行用时:292ms
  • 内存消耗:55.9MB
  • 编程语言:typescript
  • 解法介绍:深度遍历每种可能,剪纸+回溯
function findSubsequences(nums: number[]): number[][] {
const len = nums.length;
if (len === 0) return [];
const arr: number[][] = [];
const arrSet = new Set<string>();
findNext();
return arr.filter(v => v.length !== 1);
function findNext(now: number[] = [], i = 0): void {
for (; i < len; i++) {
const num = nums[i];
if (now[now.length - 1] > num) continue;
now.push(num);
const clone = [...now];
const cloneSetStr = clone.join(',');
if (!arrSet.has(cloneSetStr)) {
arr.push(clone);
arrSet.add(cloneSetStr);
}
findNext(now, i + 1);
now.pop();
}
}
}