当前位置:网站首页>LeetCode_回溯_中等_491.递增子序列
LeetCode_回溯_中等_491.递增子序列
2022-08-08 16:44:00 【小城老街】
1.题目
给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中至少有两个元素。你可以按任意顺序返回答案。
数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。
示例 1:
输入:nums = [4,6,7,7]
输出:[[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6,7,7],[7,7]]
示例 2:
输入:nums = [4,4,3,2,1]
输出:[[4,4]]
提示:
1 <= nums.length <= 15
-100 <= nums[i] <= 100
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/increasing-subsequences
2.思路
(1)回溯
思路参考本题官方题解。
3.代码实现(Java)
//思路1————回溯
class Solution {
// res 保存所有结果
List<List<Integer>> res = new ArrayList<>();
// track 用于记录回溯的路径
List<Integer> track = new ArrayList<>();
public List<List<Integer>> findSubsequences(int[] nums) {
if (nums.length <= 1) {
return res;
}
backtrack(nums, 0, Integer.MIN_VALUE);
return res;
}
public void backtrack(int[] nums, int cur, int last) {
//找到一组递增子序列
if (cur == nums.length) {
if (track.size() >= 2) {
res.add(new ArrayList<Integer>(track));
}
return;
}
if (nums[cur] >= last) {
track.add(nums[cur]);
backtrack(nums, cur + 1,nums[cur]);
track.remove(track.size() - 1);
}
if (nums[cur] != last) {
backtrack(nums, cur + 1, last);
}
}
}
边栏推荐
猜你喜欢
随机推荐
开源项目管理解决方案Leantime
laravel database: query builder
GHOST工具访问数据库
中金财富开户安全吗?怎么操作?
D2. Sage‘s Birthday (hard version)
APICloud AVM 封装日期和时间选择组件
使用 ansible-bender 构建容器镜像
leetcode:313. 超级丑数
Obtain - 64 [chances] : the soldier, subtlety also - 5 - read sun tzu - melee meter
The realization of the salary slip issuing function of WeChat public account + web background
leetcode:296.最佳的碰头地点
找工作的我看了国聘app
redis介绍&命令&性能相关&缓存穿透
英特尔两大 FPGA 产品已部署至中国创新中心:性能提高 45%,功耗降低 40%
题目:有序队列
论文解读(soft-mask GNN)《Soft-mask: Adaptive Substructure Extractions for Graph Neural Networks》
垃圾账号不胜其烦,设备指纹快速发现
VIT:Transformer进军CV的里程碑
浅学软件逆向笔记(2)
股票开户中金公司好不好,安全吗









![Acwing Week 63 [Unfinished]](/img/ad/aee803fddbba688366ca8f3e772764.png)