【编程题-错题集】连续子数组最大和(动态规划 - 线性 dp)

简介: 【编程题-错题集】连续子数组最大和(动态规划 - 线性 dp)

牛客对应题目链接:连续子数组最大和_牛客题霸_牛客网 (nowcoder.com)


一、分析题目

简单线性 dp。

1、状态表示

dp[i] 表示:以 i 位置为结尾的所有子数组中,最大和是多少。


2、状态转移方程

dp[i] = max(dp[i - 1] + arr[i], arr[i])


3、返回值

返回 dp 表里的最大值。


二、代码

1、看题解之前AC的代码

#include <iostream>
using namespace std;
 
const int N=2e5+10;
int a[N], dp[N];
 
int main()
{
    int n;
    cin >> n;
    for(int i=0; i<n; i++) cin >> a[i];
    int res=-101;
    for(int i=1; i<=n; i++)
    {
        dp[i]=max(dp[i-1]+a[i-1], a[i-1]);
        res=max(res, dp[i]);
    }
    cout << res << endl;
    return 0;
}

2、值得学习的代码

#include <iostream>
using namespace std;
 
const int N = 2e5 + 10;
 
int n;
int dp[N];
int arr[N];
 
int main()
{
    cin >> n;
    for(int i = 1; i <= n; i++) cin >> arr[i];
 
    int ret = -101;
    for(int i = 1; i <= n; i++)
    {
        dp[i] = max(dp[i - 1], 0) + arr[i];
        ret = max(ret, dp[i]);
    }
 
    cout << ret << endl;
 
    return 0;
}

三、反思与改进

这道题的思路正确,但还是没能通过全部测试样例。这里其实并不需要去判断当前值是正数还是负数,直接与以 i-1 位置为结尾的所有子数组中的最大和进行相加,再和当前值作比较即可。注意,这里需要的是连续子数组的最大和,重点是连续,所以如果前面的值太小就应该舍弃,从当前值开始重新累加。


相关文章
|
7月前
|
监控 关系型数据库 MySQL
MySQL和SQLSugar百万条数据查询分页优化
在面对百万条数据的查询时,优化MySQL和SQLSugar的分页性能是非常重要的。通过合理使用索引、调整查询语句、使用缓存以及采用高效的分页策略,可以显著提高查询效率。本文介绍的技巧和方法,可以为开发人员在数据处理和查询优化中提供有效的指导,提升系统的性能和用户体验。掌握这些技巧后,您可以在处理海量数据时更加游刃有余。
744 9
|
Linux
Linux 神奇命令大合集:掌控操作系统,成为技术达人!
Linux 神奇命令大合集:掌控操作系统,成为技术达人!
241 1
|
JavaScript 前端开发 数据安全/隐私保护
input的23种属性
input的23种属性
|
监控 安全 关系型数据库
稳定性之故障应急处理流程
尽管可以通过稳定性体系建设,来避免出现生产系统故障。但是仍然无法彻底避免一点风险都不会产生,当稳定性风险产生后,怎么快速协调组织,缩短故障时长,科学的流程呢?
稳定性之故障应急处理流程
|
存储 关系型数据库 MySQL
学习MySQL(5.7)第二战:四大引擎、账号管理以及建库(干货满满)
学习MySQL(5.7)第二战:四大引擎、账号管理以及建库(干货满满)
195 0
|
算法 搜索推荐
排序——归并排序
排序——归并排序
89 0
|
SQL 缓存 分布式计算
SPARK中InMemoryFileIndex文件缓存导致的REFRESH TABLE tableName问题
SPARK中InMemoryFileIndex文件缓存导致的REFRESH TABLE tableName问题
393 0
【uni-app】【01】底部导航栏与页面切换
【uni-app】【01】底部导航栏与页面切换
651 0
|
数据可视化 Java 大数据
Spring Boot项目实现热部署(附IDEA新版本设置方法)
Spring Boot项目实现热部署(附IDEA新版本设置方法)
1849 0
Spring Boot项目实现热部署(附IDEA新版本设置方法)
|
缓存 Java 编译器
并发编程笔记1:并发bug的成因
并发编程笔记1:并发bug的成因
144 0

热门文章

最新文章