【CSDN|每日一练】最长递增的区间长度

举报
海轰Pro 发表于 2022/11/25 17:32:36 2022/11/25
【摘要】 @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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。