描述:
给定一个长度为 n 的整数序列 a1,a2,⋯,an,求最长的连续上升子序列的长度。
连续上升子序列可以由两个下标 l 和 r (l ≤ r)确定,如果对于每个 l ≤ i < r,都有 <
,那么子序列
,
, ⋯ ,
就是一个连续上升子序列。
输入:
第一行包含一个整数 n,表示序列的长度,题目保证 1 ≤ n ≤ 。
第二行包含 n 个整数 a1,a2,⋯,an,表示给定的整数序列,题目保证 ≤
≤
。
输出:
输出一个整数,表示最长的连续上升子序列的长度。
样例输入:
5
1 3 5 4 7
样例输出:
3
样例输入:
5
2 2 2 2 2
样例输出:
1
注释:
题目保证,对于 20% 的数据,序列中仅包含一组连续上升子序列。
题目保证,对于 20% 的数据,有 1 ≤ n ≤ 。
题目保证,对于 60% 的数据,有 1 ≤ n ≤ 。
题目保证,对于 100% 的数据,有 1 ≤ n ≤ ,
≤
≤
。
#include <iostream>
using namespace std;
#include <vector>
void func()
{
int n;
cin >> n;
vector<int> arr(n, 0);
for(int i = 0; i < n; i++)
{
cin >> arr[i];
}
//初始化序列长度
int ans = 1;
int temp = 1;
for(int i = 0; i < n; i++)
{
temp = 1;
for(int j = i+1; j < n; j++)
{
if(arr[j] > arr[j-1])
temp++;
else
break;
}
if(temp > ans)
ans = temp;
}
cout << ans;
}
int main()
{
func();
return 0;
}
注:该题改编自LeetCode 674题 最长连续递增序列 我的题解为:
class Solution {
public:
int findLengthOfLCIS(vector<int>& nums) {
int maxlen = 1,templen = 1;
for(int i = 1;i < nums.size();i++){
if(nums[i] > nums[i-1]) {
templen++;
}else{
templen = 1;
}
maxlen = max(maxlen,templen);
}
return maxlen;
}
};
附:南邮NOJ在线测评系统网址:主页 | NOJ上机系统
祝大家心想事成,一战成硕!!!❤❤❤