题解 | #最长上升子序列(一)#
最长上升子序列(一)
https://www.nowcoder.com/practice/5164f38b67f846fb8699e9352695cd2f
#include <algorithm>
#include <vector>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 给定数组的最长严格上升子序列的长度。
* @param arr int整型vector 给定的数组
* @return int整型
*/
int LIS(vector<int>& arr) {
// write code here
vector<int> temp;
if(arr.size()<=1)
return arr.size();
for(int i=0;i<arr.size();i++)
{
if(temp.size()==0)
{
temp.push_back(arr[i]);
}
else if(arr[i]>temp.back())
{
temp.push_back(arr[i]);
}
else
{
*(upper_bound(temp.begin(), temp.end(), arr[i]))=arr[i];
}
}
return temp.size();
}
};
