zoukankan      html  css  js  c++  java
  • Java实现 LeetCode 491递增子序列

    491. 递增子序列

    给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。

    示例:

    输入: [4, 6, 7, 7]
    输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]
    说明:

    给定数组的长度不会超过15。
    数组中的整数范围是 [-100,100]。
    给定数组中可能包含重复数字,相等的数字应该被视为递增的一种情况。

    PS:
    DFS

    class Solution {
        public List<List<Integer>> findSubsequences(int[] nums) {
            List<List<Integer>> ans = new ArrayList<>();
            dfs(nums, new ArrayList<>(), ans, 0, -101);
            return ans;
        }
    
        private void dfs(int[] nums, List<Integer> list, List<List<Integer>> ans, int index, int lastNum) {
            if (list.size() > 1) {
                ans.add(new ArrayList<>(list));
            }
    
            for (int i = index; i < nums.length; i++) {
                if (nums[i] < lastNum) {
                    continue;
                }
    
                boolean repeat = false;
                for (int j = index; j <= i - 1; j++) {
                    if (nums[i] == nums[j]) {
                        repeat = true;
                        break;
                    }
                }
    
                if (repeat) {
                    continue;
                }
    
                list.add(nums[i]);
                dfs(nums, list, ans, i + 1, nums[i]);
                list.remove(list.size() - 1);
            }
        }
    }
    
  • 相关阅读:
    三 面向对象之绑定方法与非绑定方法
    二 面向对象三大特性
    一 面向对象定义
    面向对象路线
    七 递归与二分法、匿名函数、内置函数
    线程同步测试
    Oracle12c的安装
    git教程:添加远程仓库
    git教程:远程仓库
    git教程:删除文件
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12946434.html
Copyright © 2011-2022 走看看