文章
19
粉丝
69
获赞
30
访问
18.1k
使用一张哈希表unordered_map存储下标为i的元素是连续递增子序列中的第几个元素,即当前子序列的长度。
需要使用到动态规划的经典例题是最长递增子序列,由于在此题中加入了连续的要求,因此不需要回溯,将数组中的每个元素都当作连续递增序列的开始元素即可,同时继承上一个元素的长度再加一更新子序列长度。
#include <bits/stdc++.h>
int main()
{
int n;
std::cin >> n;
std::vector<int> num(n);
std::unordered_map<int, int> lenOfSeq(n);
int maxLen = 1;
for (int i = 0; i < n; i++)
{
std::cin >> num[i];
lenOfSeq[i] = 1; // 带上本身,至少为1
if (i >= 1)
{
if (num[i] > num[i - 1])
{
lenOfSeq[i] = lenOfSeq[i - 1] + 1;
}
maxLen = std::max(maxLen, lenOfSeq[i]);
}
}
std::cout << maxLen;
return 0;
}
登录后发布评论
暂无评论,来抢沙发