LeetCode 491. 递增子序列(回溯+判重剪枝)
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. 递增子序列(回溯+判重剪枝)相关推荐
- LeetCode 491. 递增子序列【数组,回溯算法,哈希表去重】
491. 递增子序列 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 .你可以按 任意顺序 返回答案. 数组中可能含有重复元素,如出现两个整数相等, ...
- Java实现 LeetCode 491递增子序列
491. 递增子序列 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2. 示例: 输入: [4, 6, 7, 7] 输出: [[4, 6], [4, 7], [4, ...
- leetcode 491. 递增子序列 思考分析
题目 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2. 说明: 给定数组的长度不会超过15. 数组中的整数范围是 [-100,100]. 给定数组中可能包含重复数字 ...
- LeetCode 491 递增子序列
搜索解决问题 注意去重 from typing import * class Solution:def __init__(self):self.res=[]def findSubsequences(s ...
- leetcode:491. 递增子序列、17. 电话号码的字母组合、31. 分割回文串、93. 复原 IP 地址(JavaScript)
文章目录 491. 递增子序列 分析 去重 如何保证递增呢? 17. 电话号码的字母组合 思路: 单层递归逻辑 递归终止条件 完整代码 另一种写法 31. 分割回文串 思路:分析题目本题可分为两步 9 ...
- Suzy加油吧 Day 29 | 回溯算法进行中:491. 递增子序列,46 全排列,47 全排列2
491. 递增子序列(新 & 难) 呜呜呜呜呜 题目 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 .你可以按 任意顺序 返回答案. 数组 ...
- 【ACM/webank】#491.递增子序列(使用HashSet来记录并防止重复子序列)
#491.递增子序列 1 回溯 昨晚webank考到这道题 1 回溯 https://programmercarl.com/0491.%E9%80%92%E5%A2%
- 491. 递增子序列
链接:491. 递增子序列 题解:https://leetcode-cn.com/problems/increasing-subsequences/solution/liang-chong-dfshu ...
- 491. 递增子序列(回溯算法)
给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 .你可以按 任意顺序 返回答案. 数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一 ...
最新文章
- mysql 多表关联建模_(四)多对多模式 - 数据库模型设计专栏 - CSDN博客
- 初识FPGA(一)(初步介绍FPGA)
- SpringBoot 之环境搭建
- html自定义js程序,JS中微信小程序自定义底部弹出框
- 中国计算机学会通讯下载工具(简易爬虫)
- mysql 常用计算函数_关于MySQL常用的一些函数以及一些计算
- php打印出网站源码/php数据压缩代码
- Linux内核之capabilities能力
- 在Mac系统中如何使用App Cleaner Uninstaller Pro清理应用卸载残留?
- html中li整体变色,JS+CSS实现鼠标经过div(li)背景变色
- android控件缩放后居中,三大布局的基本摆放属性总结,以及imageVIew图片摆放的缩放问题...
- 修正的判定/条件覆盖
- 提问的智慧 (How To Ask Questions The Smart Way)
- 他把科学,放进几代人的中二梦
- POSTGRESQL 差点发生一次冻结炸弹后的反思
- REMOTE HOST IDENTIFICATION HAS CHANGED问题解决
- 虚幻引擎学习之路:动画模块之基础篇
- avi怎么转换为mp4格式?
- 巨人纪学峰:未来网游发展趋势是社区化
- 程序员真实从零开始实操 赚钱渠道之一CPS