心情:哇!最近刷题越来越不顺心了,这道题不难吧!但是却花了很长时间…
题目描述:
给定一个无序的整数数组,找到其中最长上升子序列的长度。
示例:
输入: [10,9,2,5,3,7,101,18]
输出: 4
解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。
自己的想法:
我看到这道题首先理解题目的意思:在当前位置的前面,有多少数比当前数字小,且这些小的数字逐渐递增,而我想到的第一个方法是用单调栈!!!因为都是按顺序,而且找当前位置之前小于它的数
之后兴致勃勃打完代码,发现不对,后来回顾了一下单调栈,发现单调栈所解决的问题有一个特点,就是单调栈有一个截断性和连续性的问题。
打几个比方
(截图来自于https://blog.csdn.net/lucky52529/article/details/89155694)
它相当于找当前位置之后比它小的值,但是要满足两个条件,第一连续的,第二,当遇到第一个比当前位置大的值,那么当前