1. 题目

给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是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]。
给定数组中可能包含重复数字,相等的数字应该被视为递增的一种情况。

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

2. 解题

  • 类似题目
    LeetCode 47. 全排列 II(回溯+搜索剪枝)
    LeetCode 46. 全排列(回溯)
    LeetCode 996. 正方形数组的数目(回溯+剪枝)

  • 这里由于是无序的,可能存在相同元素,但是不连续,在一次dfs的for之前加一个哈希set

  • set中存在的元素再次出现时,跳过,如下例子中的1

[1,2,3,4,5,6,7,8,9,10,1,1,1,1,1]
[1,2,1,1,1]
结果为:
[[1,2],[1,1],[1,1,1],[1,1,1,1]],可以理解一下
class Solution {vector<vector<int>> ans;vector<int> path;
public:vector<vector<int>> findSubsequences(vector<int>& nums) {dfs(0, nums);return ans;}void dfs(int i, vector<int> &nums){unordered_set<int> s;//一次dfs中的判重for( ; i < nums.size(); ++i){if(s.count(nums[i]))//再次出现同样的值,跳过continue;if(path.empty() || path.back() <= nums[i]){path.push_back(nums[i]);s.insert(nums[i]);if(path.size() > 1)ans.push_back(path);dfs(i+1, nums);path.pop_back();}}}
};

80 ms 23.1 MB

LeetCode 491. 递增子序列(回溯+判重剪枝)相关推荐

  1. LeetCode 491. 递增子序列【数组,回溯算法,哈希表去重】

    491. 递增子序列 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 .你可以按 任意顺序 返回答案. 数组中可能含有重复元素,如出现两个整数相等, ...

  2. Java实现 LeetCode 491递增子序列

    491. 递增子序列 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2. 示例: 输入: [4, 6, 7, 7] 输出: [[4, 6], [4, 7], [4, ...

  3. leetcode 491. 递增子序列 思考分析

    题目 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2. 说明: 给定数组的长度不会超过15. 数组中的整数范围是 [-100,100]. 给定数组中可能包含重复数字 ...

  4. LeetCode 491 递增子序列

    搜索解决问题 注意去重 from typing import * class Solution:def __init__(self):self.res=[]def findSubsequences(s ...

  5. leetcode:491. 递增子序列、17. 电话号码的字母组合、31. 分割回文串、93. 复原 IP 地址(JavaScript)

    文章目录 491. 递增子序列 分析 去重 如何保证递增呢? 17. 电话号码的字母组合 思路: 单层递归逻辑 递归终止条件 完整代码 另一种写法 31. 分割回文串 思路:分析题目本题可分为两步 9 ...

  6. Suzy加油吧 Day 29 | 回溯算法进行中:491. 递增子序列,46 全排列,47 全排列2

    491. 递增子序列(新 & 难) 呜呜呜呜呜 题目 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 .你可以按 任意顺序 返回答案. 数组 ...

  7. 【ACM/webank】#491.递增子序列(使用HashSet来记录并防止重复子序列)

    #491.递增子序列 1 回溯 昨晚webank考到这道题 1 回溯 https://programmercarl.com/0491.%E9%80%92%E5%A2%

  8. 491. 递增子序列

    链接:491. 递增子序列 题解:https://leetcode-cn.com/problems/increasing-subsequences/solution/liang-chong-dfshu ...

  9. 491. 递增子序列(回溯算法)

    给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 .你可以按 任意顺序 返回答案. 数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一 ...

最新文章

  1. mysql 多表关联建模_(四)多对多模式 - 数据库模型设计专栏 - CSDN博客
  2. 初识FPGA(一)(初步介绍FPGA)
  3. SpringBoot 之环境搭建
  4. html自定义js程序,JS中微信小程序自定义底部弹出框
  5. 中国计算机学会通讯下载工具(简易爬虫)
  6. mysql 常用计算函数_关于MySQL常用的一些函数以及一些计算
  7. php打印出网站源码/php数据压缩代码
  8. Linux内核之capabilities能力
  9. 在Mac系统中如何使用App Cleaner Uninstaller Pro清理应用卸载残留?
  10. html中li整体变色,JS+CSS实现鼠标经过div(li)背景变色
  11. android控件缩放后居中,三大布局的基本摆放属性总结,以及imageVIew图片摆放的缩放问题...
  12. 修正的判定/条件覆盖
  13. 提问的智慧 (How To Ask Questions The Smart Way)
  14. 他把科学,放进几代人的中二梦
  15. POSTGRESQL 差点发生一次冻结炸弹后的反思
  16. REMOTE HOST IDENTIFICATION HAS CHANGED问题解决
  17. 虚幻引擎学习之路:动画模块之基础篇
  18. avi怎么转换为mp4格式?
  19. 巨人纪学峰:未来网游发展趋势是社区化
  20. 程序员真实从零开始实操 赚钱渠道之一CPS

热门文章

  1. js反混淆还原工具_SATURN反混淆框架
  2. 深度相机(三)--三种方案对比
  3. HALCON常用算子(HALCON13.0)
  4. 函数指针与回调函数详解
  5. insert mysql后加where,如何在MySQL Insert語句中添加where子句?
  6. 数据结构探险——线性表篇
  7. html奇淫技巧 2 教你如何进行图文环绕布局 原创
  8. 【windows phone】CollectionViewSource的妙用
  9. requests库之处理响应
  10. svg defs 进行定义 引用