Leetcode 491. Increasing Subsequences 上升序列 解题报告

避开爬虫坑:手把手教你合法获取百度地图POI边界数据(以学校为例) 本文详细介绍了如何合规获取百度地图POI边界数据的方法论,特别以学校为例。通过解析POI数据结构、合法使用百度地图API接口、优化请求策略以及数据处理技巧,帮助开发者和研究者在遵守平台规则的前提下高效获取地理信息。适用于学术研究、商业分析等多种场景,确保数据采集的合法性与准确性。 阅读详情

1 解题思想

hi,好久不见,最近有点忙,更新的很慢。
这道题是给了一个已经排好序的数组,让你找出所有的子序列,这些子序列要求同样是不下降的(就是i+1的数肯定大于等于i),相同的序列不能重复出现,但是允许某个数重复(所以是不重复)。

我给的是最简单的一个方式,直接回溯,递归去找,使用一个hashset去帮助筛选重复。这里我只加了一个小的优化,就是next,比如3776这样的,当指针在3时,会首先尝试第一个7,然后直接跳过第二个7到6,这样可以节省搜索。

这不是最优解,其实有个解法是:
统计独立出现的所有数和其频率
根据这个数再去生成结果,可以节省很多搜索时间,例如:
337789
Step1:统计 3:2,7:2,8:1,9:1
Step2:递归还原,每一步两个选择(意思是都要尝试),若当前的那个数使用的次数还够,那么-1后重复Step2,若还有下一个数,那么跳过当前数直接到下一个数

每一步Step2的时候,检查下长度,就可以加入到结果中了,而且这个不需要hashSet,不会重复的。

抱歉,我刚写的时候理解的不是很好,所以给的答案不是后面想到那种方式。
微博同名

2 原题

Given an integer array, your task is to find all the different possible increasing subsequences of the given array, and the length of an increasing subsequence should be at least 2 .

Example:
Input: [4, 6, 7, 7]
Output: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]
Note:
The length of the given array will not exceed 15.
The range of integer in the given array is [-100,100].
The given array may contain duplicates, and two equal integers should also be considered as a special case of increasing sequence.

3 AC解

public class Solution {
    /**
     * 这道题有个很好玩的点:那就是在hashset当中放入数组时,其检查的是这个数组里面的数值是否是一样的,而不是单纯按照对象的地址
     * */
    public List<List<Integer>> findSubsequences(int[] nums) {
        Set<List<Integer>> res= new HashSet<List<Integer>>();
        List<Integer> tmp = new ArrayList<Integer>();
        int[] next = new int[nums.length];
        for(int i=0;i<nums.length;i++){
            int my_next = i+1;
            while(my_next<nums.length && nums[i]==nums[my_next])
                my_next++;
            next[i] = my_next;
        }
        helper(res,tmp,nums,next,0);
        return new ArrayList<List<Integer>>(res);
    }

    /**
     * 采用回溯的方式不停地递归,寻找解决方法
     * 其实还有更简单的方式,但这里就不多说了
     * */
    private void helper(Set<List<Integer>> res,List<Integer> tmp,int[] nums,int[] next,int index){
        if(tmp.size() > 1){
            res.add(new ArrayList<Integer>(tmp));
        }
        int i=index;
        for(;i<nums.length;){
            if(tmp.size()==0 || tmp.get(tmp.size() - 1) <= nums[i]){
                tmp.add(nums[i]);
                helper(res,tmp,nums,next,i+1);
                tmp.remove(tmp.size() - 1);
            }
            //快速跳到下一个上
            i = next[i];
        }
    }
}
Power Automate Desktop实战:一键自动登录Chrome网站 本文详细介绍了如何使用Power Automate Desktop实现Chrome网站的一键自动登录,提升工作效率。从环境准备、基础配置到高级技巧与异常处理,全面解析自动化登录流程的构建与优化,特别适合需要频繁登录多个系统的用户。 阅读详情

相关推荐

基于Python实现身份证信息识别

身份证是一种重要的证件,包含了个人的基本信息,如姓名、性别、出生日期、住址等。在实际应用中,有时需要对身份证进行自动化的识别,以提高工作效率和准确性。本文将介绍如何使用Python实现身份证信息的识别,通过图像预处理、OCR技术和解析算法,实现对身份证号码和其他信息的提取和解析。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 1万+

leetcode491. 递增子序列

题目来源 leetcodeincreasing-subsequences 题目描述 题目解析 回溯 即枚举出所有的子序列,然后判断当前的子序列是否是严格递增的,然后还需要去重。所以我们需要解决两个问题: 如何枚举出所有的子序列 如何判断子序列是严格递增的 如何对子序列去重 怎么枚举出所有的子序列呢? 可以遍历nums中数组的每一个值,每个元素都有两种选择,要么加入tmp数组,要么不加。 void dfs(std::vector<int> &nums, std::vect

OceanStar的博客 609

回声消除AEC初探

那段保留即可——在播放期间把麦克风关闭(软件层面的 mute),同样能根除回声,只是会失去“一句话期间仍能捕获背景噪声”的能力。如果还有更细节的需求(比如多语言 TTS、实时流式 ASR),欢迎继续交流。的完整示例,可直接拷贝、改造、集成到你现有的 LLM‑TTS 对话系统中。实际效果取决于用户设备的硬件与驱动,若仍有回声,可让用户佩戴。把扬声器信号(把播放音频拷贝给 AEC)从麦克风流中减去。:TTS 播放的声音被同一个麦克风再次捕获,导致声学回声。三种实现示例,帮助你快速落地。,几乎可以消除所有回声。

NLP与推荐算法 528

LeetCode|回溯算法|491. 递增子序列 、46. 全排列、47. 全排列 II

有关排列的相关题目。

李___的博客 220

LeetCode_491 递增子序列 /大厂笔试题讲解

目录标题一、题目信息二、解题思路三、解题代码四、其他好题分享 一、题目信息 本题和LeetCode_491相同,这里我以牛客网的形式写题。 二、解题思路 题目要求的只需要找到长度为三的子序列,还不要求是连续的。创建两个引用,first,second,分别表示第一大和第二大的数字,如果遍历的时候数组中还有比他们两个数还大的数字,那长度为3的子序列不就有了吗?如果遍历完了还么有,就说明是真的没有了,返回false。 还有其他两种情况 1、遍历数组的时候遇到的数(这里称为P)first比p大,既然连子序列.

guankunkunwd的博客 1468

leetcode(力扣) 491. 递增子序列(回溯 & 去重思路)

这是这道题比较有意思的地方,终止条件可以理解为,收集结果的地方,实际上对于包括之前的子集问题,是没有终止条件的,就是任何子节点的结果都需要,而这道题唯一需要注意的两个地方就是,当前记录的答案里面是不是的元素是不是大于1个,而且是不是递增的。输出:[[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6,7,7],[7,7]]因为这道题需要去重,而又不能用之前组合总和2里的那个去重思路,因为这是找子序列,不能排序,排序之后顺序就乱了。输出:[[4,4]]

深度不学习!!的博客 580

leetcode491.递增子序列【回溯算法】详细图解!

和子集问题有点像,但又处处是陷阱

代码随想录 800

【小白爬Leetcode491】递增子序列 Increasing Subsequences

【小白爬Leetcode491】递增子序列 Increasing Subsequences题目龟速方法 题目 Leetcode201 medium\color{#FF4500}{medium}medium 点击进入原题链接:数字范围按位与 Bitwise AND of Numbers Range Given an integer array, your task is to find all the different possible increasing subsequences of the g

weixin_41604040的博客 623

LeetCode 力扣 491. 递增子序列 increasing subsequences

大家觉得写还可以,可以点赞、收藏、关注一下吧! 也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn 文章目录491. 递增子序列题目描述示例:说明:分析dp 解法(类似 bfs)dfs 解法(递归回溯+剪枝)提交结果 491. 递增子序列 题目描述 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。 示例: 输入: [4, 6, 7, 7] 输出: [[4, 6], [4, 7], [4, 6, 7], [4,

motongxue的博客 342

[leetcode]491. Increasing Subsequences

[leetcode]491. Increasing Subsequences Analysis 放假回家效率果然打折—— [每天刷题并不难0.0] Given an integer array, your task is to find all the different possible increasing subsequences of the given array, and th...

weixin_32135877的博客 190

Leetcode491. Increasing Subsequences

题目地址: https://leetcode.com/problems/increasing-subsequences/ 给定一个数组AAA,返回其所有长度大于等于222的(非严格)上升序列。要求避免返回结果中包含完全相同的两个子序列。 思路是DFS。我们可以每次到达一个位置的时候,就枚举当前数字是否加入。问题的关键在于怎样避免重复枚举,方法是用个哈希表,本层递归的时候同一个数字只枚举一次。注意,此时对哈希表不必恢复现场。代码如下: import java.util.ArrayList; import j

数学、算法爱好者的博客 180

LeetCode | 0491. Increasing Subsequences递增子序列【Python】

LeetCode 0491. Increasing Subsequences递增子序列【Medium】【Python】【DFS】

Wonz 477

[leetcode] 491. Increasing Subsequences

Given an integer array, your task is to find all the different possible increasing subsequences of the given array, and the length of an increasing subsequence should be at least 2 .Example: Input: [4

蜗牛君的奋斗史 1682

LeetCode491. Increasing Subsequences 解题报告(Python)

LeetCode491. Increasing Subsequences 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://leetcode.com/problems/increasing-subsequences/description/ 题目描述: Given an integer array, your task is to fin...

负雪明烛 2356

leetcode 491. Increasing Subsequences | 491. 递增子序列(Java)

题目 https://leetcode.com/problems/increasing-subsequences/ 题解 class Solution { public List<List<Integer>> findSubsequences(int[] nums) { Set<List<Integer>> set = process(nums, 0); List<List<Integer>>

寒泉 4万+

leetcode 491. Increasing Subsequences

Given an integer array, your task is to find all the different possible increasing subsequences of the given array, and the length of an increasing subsequence should be at least 2 . Example: In

淡然坊 316

Leetcode之深度优先搜索&回溯专题-491. 递增子序列Increasing Subsequences

Leetcode之深度优先搜索&回溯专题-491. 递增子序列Increasing Subsequences) 深度优先搜索的解题详细介绍,点击 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。 示例: 输入: [4, 6, 7, 7] 输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6...

denghan1065的博客 207

LeetCode491. Increasing Subsequences

Given an integer array, your task is to find all the different possible increasing subsequences of the given array, and the length of an increasing subsequence should be at least 2. Example: Inp...

李歇特冯-兹拜因巴哈的博客 185

LeetCode 491. Increasing Subsequences

Given an integer array, your task is to find all the different possible increasing subsequences of the given array, and the length of an increasing subsequence should be at least 2 . Example: Input: [...

zhaohaibo的博客 362

LeetCode491.Increasing Subsequences(Medium)解题报告

LeetCode491.Increasing Subsequences(Medium)解题报告题目地址:https://leetcode.com/problems/increasing-subsequences/description/ 题目描述:   Given an integer array, your task is to find all the different possib

郝春雨的博客 232

[Swift]LeetCode491. 递增子序列 | Increasing Subsequences

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)➤GitHub地址:https://github.com/strengthen/LeetCode➤原文地址:https://www.cnblogs.com/streng...

weixin_30322405的博客 171

[LeetCode] (medium) 491. Increasing Subsequences

https://leetcode.com/problems/increasing-subsequences/ Given an integer array, your task is to find all the different possible increasing subsequences of the given array, and the length of an increa...

Frontier_Setter的博客 145

【重磅】最新AIOps智能运维实践方案资料大合集(62份).zip

重磅,最新AIOps智能运维实践方案资料大合集,共62份。阿里巴巴海量服务器下的基础运维智能化实践阿里巴巴智能数据中心AIOps演进阿里云弹性计算智能诊断运维体系建设实践百度AIOps解决方案及行业落地案例百万交易系统 AIOps 架构实战保险公司主动运维与智能运维实践北京移动面向5G的技术运营中台实践和AIOps探索大规模微服务集群的智能运维实践大数据海量任务调度和智能运维实践虎牙直播AIOps探索与实践华泰证券智能运维体系探索与实践基于 AIOps 的大规模微服务轨迹数据分析基于机器学习的数据库智能化运维基于时序数据的AIOps实践基于智能运维算法的异常检测应用金融业务级智能运维迈向智能运维时代-AIOps如何服务应用运维民生银行-数据库智能运维实践2.0平安科技智能运维探索与思考平安科技AIOPS建设实践分享日志易-数据驱动的智能运维平台上海银行业务级智能运维实践实践BSM运维,AIOps赋能业务价值实现数据库智能运维(含手机端远程运维)建设实践腾讯-为AIOps的普及而重生的基础监控循序渐进推动运维数字化和智能化宜信无侵入智能业务运维实践以数据为驱动的AIOps平台云化环境下智能运维实践运维大会之安全运营中的AI智能分析和预警实战运维行业的变革——数据运营化与智能化在线教育行业从0到1的AIOps之路在新一代运维中台架构之上构建智能场景化运维在运维团队中普及DataOps和AIOps浙江移动基础设施AIOps实践及探索浙江移动私有云AIOps实践浙江移动AIOpsDev运维转型实践制造业全栈式监控一体化智能运维平台智能开发 高效运维智能运维的实用性和易用性探索智能运维分析领域中的算法研究和场景探索智能运维赋能的58集团系统稳定性建设智能运维体系下的IT运营体系智能运维在高德弹性容量领域的落地实践中畅数据AIOps一体化平台中国电信IT全面上云智能运维体系探索中国移动灰度发布AIOPS场景实践中油瑞飞-大型企业智能运维的探索和实践自然语言处理(NLP)在AIOps中的应用-阿里云AIOps工具体系建设提升研发效能AIOps趋势下的运维管理体系变化AIOps如何服务应用运维AIOps园区网络运维实践AIOpsDev新基建,智领价值运维转型AIopsIT应用监控保障系统开发实战DataOps和AIOps在腾讯游戏运维团队的运营实践ManageOne云管理平台,使能金融智能运营运维PB级数据的智能化运维实践万台服务器下的智能运维实践智能运维数据化运维构筑智能运维能力58集团在稳定性建设领域的智能运维探索2021年智能运维AIOps 6大趋势

gitblit-1.9.3

gitblit-1.9.3

上一篇: Leetcode 486. Predict the Winner 预测赢家 解题报告
下一篇: 2017/3 更新异常说明
学术状态抽奖器
博客等级 码龄14年 249粉丝 270原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值