300. 最长上升子序列--LeeCode刷题(误用单调栈,反思)

博客讨论了在LeetCode上解决最长上升子序列问题时的错误思路,即误用单调栈。作者指出,单调栈适用于寻找连续且具有截断性的子序列,而该问题要求的子序列不一定连续。因此,正确的解题方法是使用插入法,通过维护一个子集,并在遇到新元素时决定是否替换或插入。文章通过示例解释了为何不能直接使用单调栈,并提供了清晰的解题思路。
摘要由CSDN通过智能技术生成

心情:哇!最近刷题越来越不顺心了,这道题不难吧!但是却花了很长时间…

题目描述:

给定一个无序的整数数组,找到其中最长上升子序列的长度。

示例:

输入: [10,9,2,5,3,7,101,18]
输出: 4
解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。

自己的想法:

我看到这道题首先理解题目的意思:在当前位置的前面,有多少数比当前数字小,且这些小的数字逐渐递增,而我想到的第一个方法是用单调栈!!!因为都是按顺序,而且找当前位置之前小于它的数

之后兴致勃勃打完代码,发现不对,后来回顾了一下单调栈,发现单调栈所解决的问题有一个特点,就是单调栈有一个截断性连续性的问题。

打几个比方
(截图来自于https://blog.csdn.net/lucky52529/article/details/89155694
在这里插入图片描述

它相当于找当前位置之后比它小的值,但是要满足两个条件,第一连续的,第二,当遇到第一个比当前位置大的值,那么当前

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值