题目描述
思路
维护一个dpMax 表示以当前数字结尾的最长上升序列
状态转移dpMax[i] = max(dpMax[i],dpMax[j]+1);
注意!!!,在memset对内存进行填充时是以 字节 为单位所以 int类型一般memset只适用于0;
代码
class Solution {
public:
int lengthOfLIS(vector<int>& nums) {
if(nums.size()==0)
return 0;
vector <int> dpMax(nums.size(),1);
for(int i=1;i < nums.size() ;i++)
{
for(int j=0;j<i;j++)
{
if(nums[j] < nums[i])
{
dpMax[i] = max(dpMax[i],dpMax[j]+1);
}
}
}
int res = dpMax[0];
for(int i=1;i<nums.size();i++)
{
if(dpMax[i] > res)
res = dpMax[i];
}
return res;
}
};