Increasing Subsequences
Example
Input:
[4, 6, 7, 7]
Output:
[[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]Note
Code
Last updated
Input:
[4, 6, 7, 7]
Output:
[[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]Last updated
class Solution {
public List<List<Integer>> findSubsequences(int[] nums) {
Set<List<Integer>> res= new HashSet<>();
dfs(res, nums, 0, new ArrayList<>());
return new ArrayList(res);
}
private void dfs(Set<List<Integer>> res, int[] nums,
int start, List<Integer> list) {
if (list.size() > 1) {
res.add(new ArrayList<>(list));
}
for (int i = start; i < nums.length; i++) {
if (list.size() == 0 || list.get(list.size() - 1) <= nums[i]) {
list.add(nums[i]);
dfs(res, nums, i + 1, list);
list.remove(list.size() - 1);
}
}
}
}