题目:
给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是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]]
思路:
dfs 到底,回溯算法
别用 list.indexOf() 方法在递归中
巨慢
class Solution {
List<List<Integer>> res = new ArrayList<>();
List<Integer> list = new ArrayList<>();
public List<List<Integer>> findSubsequences(int[] nums) {
dfs(nums,0,Integer.MIN_VALUE);
return res;
}
public void dfs(int[] nums,int cur,int pre){
if(cur==nums.length){
if(list.size()>1)
res.add(new ArrayList<>(list));
return;
}
if(nums[cur]>=pre){
list.add(nums[cur]);
dfs(nums,cur+1,nums[cur]);
list.remove(list.size()-1);
}
if(nums[cur]!=pre){
dfs(nums,cur+1,pre);
}
}
}