链接:https://leetcode-cn.com/problems/increasing-subsequences/
排列组合问题一般用回溯法写,注意这道题需要一个set来去除可能出现的重复的结果。
java代码:
class Solution {
List<List<Integer>> ans = new ArrayList();
List<Integer> temp = new ArrayList();
public List<List<Integer>> findSubsequences(int[] nums) {
backtrack(nums,0);
return ans;
}
private void backtrack(int [] nums, int begin)
{
if(temp.size()>=2)
ans.add(new ArrayList<>(temp));
Set<Integer> set = new HashSet<>();
for(int i = begin;i<nums.length;i++)
{
if(set.contains(nums[i])) continue;
if(temp.size()==0||nums[i]>=temp.get(temp.size()-1))
{
set.add(nums[i]);
temp.add(nums[i]);
backtrack(nums,i+1);
temp.remove(temp.size()-1);
}
}
}
}