Set is used for this question.
Because there is no sort, there may be repeated things in the future.
Https://leetcode.com/problems/increasing-subsequences/discuss/97130/Java-20-lines-backtracking-solution-using-set-beats-100.
1 class Solution { 2 Set<List<Integer>> res = new HashSet<>(); 3 public List<List<Integer>> findSubsequences(int[] nums) { 4 if(nums.length == 0) new ArrayList<>(res); 5 visited = new boolean[nums.length]; 6 backtrack(nums, new ArrayList<>(), 0); 7 return new ArrayList<>(res); 8 9 }10 11 public void backtrack(int[] nums, List<Integer> list, int pos){12 if(list.size() > 1){13 res.add(new ArrayList<>(list));14 }15 16 for(int i = pos; i < nums.length; i++){17 if(list.size() != 0 && (nums[i] < list.get(list.size()-1))){18 continue;19 }else{20 list.add(nums[i]);21 visited[i] = true;22 backtrack(nums, list, i+1);23 visited[i] = false;24 list.remove(list.size()-1);25 }26 27 28 } 29 30 }31 }
491. increasing subsequences