定义:在一个没有排好序的数组中,找最长的单调递减或单调递增的序列。
解题思路:通过动态规划解题。假设从0--(i - 1)已经构成了长度为s的递减序列,且这些序列中的末尾值中的最大值为t;
1、如果a[i] < t,则假如到这个序列中去,长度变为s + 1。对应的末尾值变为a[i]。
2、如果a[i] == t, 则说明从0 - i 的最长序列长度为s。
3、如果a[i] > t,a[i]不一定能成为最长序列的末尾值。此时取绝于长度为s - 1的序列的末尾最大值是max。如果max > a[i],则他可以成为长度为s的递减序列。如果max < a[i], 继续往前推, 直到a[i]小于某个末尾的最大值,此时长度为k。那么a[i]是0-i中长度为k + 1的递减序列的最大值。
两个实例:
1.拦截导弹
题目描述: