【CSDN|每日一练】最长递增的区间长度
【摘要】 @TOC 运行结果 题目描述给一个无序数组,求最长递增的区间长度。如:[5,2,3,8,1,9] 最长区间 2,3,8 长度为 3 (注意:测试用例仅做参考,我们会根据代码质量进行评分) 输入描述:第一行输入整数n。(1<=n<=10000)表示数组的大小 第二行给出n个整数a.(-1e9<=a<=1e9) 输出描述:nan 示例 代码思路:动态规划判断当前num是否大于上一个num,若是,...
@TOC
运行结果
题目描述
给一个无序数组,求最长递增的区间长度。
如:[5,2,3,8,1,9] 最长区间 2,3,8 长度为 3 (注意:测试用例仅做参考,我们会根据代码质量进行评分)
输入描述:
第一行输入整数n。(1<=n<=10000)表示数组的大小 第二行给出n个整数a.(-1e9<=a<=1e9)
输出描述:
nan
示例
代码
思路:
- 动态规划
- 判断当前num是否大于上一个num,若是,则dp[i] += dp[i-1] 否则,dp[i] = 1
- dp[i]表示以第i元素结尾的子串的最长递增的区间长度
完整代码
// 请关闭中文输入法,用英文的字母和标点符号。
// 如果你想运行系统测试用例,请点击【执行代码】按钮,如果你想提交作答结果,请点击【提交】按钮,
// 注意:除答案外,请不要打印其他任何多余的字符,以免影响结果验证
// 本OJ系统是基于 OxCoder 技术开发,网址:www.oxcoder.com
// 模版代码提供基本的输入输出框架,可按个人代码习惯修改
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
using namespace std;
int solution(int n, std::vector<int>& vec){
int result = 1;
// TODO:
vector<int> dp(n, 1);
for(int i = 1; i < n; ++i) {
if(vec[i] > vec[i-1]) {
dp[i] += dp[i-1];
result = max(result, dp[i]);
}
}
return result;
}
int main() {
int n;
std::vector<int> vec;
std::cin>>n;
std::string line_0, token_0;
getline(std::cin >> std::ws,line_0);
std::stringstream tokens_0(line_0);
while(std::getline(tokens_0, token_0, ' ')){
vec.push_back(std::stoi(token_0));
}
int result = solution(n,vec);
std::cout<<result<<std::endl;
return 0;
}
运行结果
结语
Hello!
非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~
ଘ(੭ˊᵕˋ)੭
昵称:海轰
标签:程序猿|C++选手|学生
简介:因C语言结识编程,随后转入计算机专业,获得过国家奖学金,有幸在竞赛中拿过一些国奖、省奖…已保研
学习经验:扎实基础 + 多做笔记 + 多敲代码 + 多思考 + 学好英语!
唯有努力💪
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)