491. 递增子序列

给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。

数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/increasing-subsequences
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

import java.util.*;

class Solution {
    private List<List<Integer>> ans = new ArrayList<>();

    private LinkedList<Integer> path = new LinkedList<>();

    private void solve(int[] nums, int index, int prev) {
        if (index == nums.length) {
            if (path.size() >= 2) {
                ans.add(new ArrayList<>(path));
            }
            return;
        }
        if (nums[index] != prev) {
            solve(nums, index + 1, prev);
        }
        if (nums[index] >= prev) {
            path.offerLast(nums[index]);
            solve(nums, index + 1, nums[index]);
            path.pollLast();
        }
    }

    public List<List<Integer>> findSubsequences(int[] nums) {
        solve(nums, 0, -101);
        return ans;
    }
}
posted @ 2022-01-16 15:30  Tianyiya  阅读(36)  评论(0)    收藏  举报