491. Increasing Subsequences

来源:互联网 发布:深圳压寨网络是培训么 编辑:程序博客网 时间:2024/06/13 17:42

Given an integer array, your task is to find all the different possible increasing subsequences of the given array, and the length of an increasing subsequence should be at least 2 .

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:

  1. The length of the given array will not exceed 15.
  2. The range of integer in the given array is [-100,100].
  3. The given array may contain duplicates, and two equal integers should also be considered as a special case of increasing sequence.


Seen this question in a real interview before? 

class Solution {    public List<List<Integer>> findSubsequences(int[] nums) {        LinkedHashSet<List<Integer>> data = new LinkedHashSet<>();for (int n : nums) {Iterator<List<Integer>> it = data.iterator();List<List<Integer>> addTemp = new ArrayList<>();while (it.hasNext()) {List<Integer> temp = it.next();if (n >= temp.get(temp.size() - 1)) {List<Integer> newList = new ArrayList<>(temp);newList.add(n);addTemp.add(newList);}}data.addAll(addTemp);List<Integer> addNew = new ArrayList<>();addNew.add(n);data.add(addNew);}List<List<Integer>> re = new ArrayList<>();Iterator<List<Integer>> it = data.iterator();while (it.hasNext()) {List<Integer> temp = it.next();if (temp.size() > 1)re.add(temp);}return re;    }}


原创粉丝点击