文章
19
粉丝
69
获赞
100
访问
29.7k
 
使用一张哈希表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;
}
    
登录后发布评论
暂无评论,来抢沙发