【一刷《剑指Offer》】面试题 31:连续子数组的最大和

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

力扣对应题目链接:53. 最大子数组和 - 力扣(LeetCode)

核心考点 :简单动归问题。

一、《剑指Offer》对应内容


二、分析题目

1、贪心

从前往后迭代,一个个数字加过去,如果 sum<res,则重新开始找子序串。


2、动态规划

  • 定义状态 dp[i]:表示以 i 下标结尾的最大连续子序列的和。
  • 状态递推:dp[i] = max(dp[i-1]+array[i], array[i]) 【 注意:这里一定要连续关键字】
  • 状态的初始化:dp[0] = array[0], max = array[0]

很明显,上面的这个做法只会使用到 dp[i] dp[i-1],所以是有优化的可能的。


三、代码

//牛客
#include <iostream>
using namespace std;const int N=2e5+10;
int arr[N], dp[N];int main()
{int n;cin >> n;for(int i=0; i<n; i++) cin >> arr[i];dp[0]=arr[0];int res=arr[0];for(int i=1; i<n; i++){dp[i]=max(dp[i-1]+arr[i], arr[i]);res=max(res, dp[i]);}cout << res << endl;return 0;
}//基于上面代码的优化
#include <iostream>
using namespace std;const int N=2e5+10;
int arr[N];int main()
{int n;cin >> n;for(int i=0; i<n; i++) cin >> arr[i];int sum=arr[0];int res=arr[0];for(int i=1; i<n; i++){if(sum>=0) sum+=arr[i];else sum=arr[i];res=max(res, sum);}cout << res << endl;return 0;
}
//力扣
//方法一
class Solution {
public:int maxSubArray(vector<int>& nums) {int res=-2e4;int sum=0;for(int i=0; i<nums.size(); i++){sum+=nums[i];if(sum>res)res=sum;if(sum<0)sum=0;}return res;}
};//方法二(与上面牛客的写法不太一样)
class Solution {
public:int maxSubArray(vector<int>& nums) {int n=nums.size();vector<int> dp(n+1);int res=-2e4;for(int i=1; i<=n; i++){dp[i]=max(nums[i-1], dp[i-1]+nums[i-1]);if(dp[i]>res) res=dp[i];}return res;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/21069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于Posix标准接口和Nuttx操作系统

基本介绍 主要参考&#xff1a; Linux 系统中的 POSIX 接口详细介绍_linux posix-CSDN博客 POSIX&#xff08;Portable Operating System Interface&#xff0c;可移植操作系统接口&#xff09;是由 IEEE&#xff08;Institute of Electrical and Electronics Engineers&#x…

大模型对齐方法笔记四:针对领域问答来进行知识对齐方法KnowPAT

KnowPAT KnowPAT(Knowledgeable Preference AlignmenT) 出自2023年11月的论文《Knowledgeable Preference Alignment for LLMs in Domain-specific Question Answering》&#xff0c;主要针对领域问答来进行知识对齐。 在领域问答有两个挑战&#xff1a;希望输出满足用户的要…

Notepad++ 常用

File Edit search view Encoding Language Settings Tools Macro Run Plugins Window 文件 编辑 搜索 视图 编码 语言 设置 工具 宏 运行 插件 窗口 快捷方式 定位行 &#xff1a;CTRL g查找&#xff1a; CTRL F替换&am…

小白也能看得懂的基于HTML+CSS+JS实现的五子棋小游戏

五子棋是一种起源于中国的传统棋类游戏&#xff0c;具有悠久的历史。 基本规则 棋盘&#xff1a; 五子棋通常在一个 15x15 的棋盘上进行&#xff0c;但也可以在更大的棋盘上进行。棋盘上的每个交叉点称为一个“点”。 棋子&#xff1a; 五子棋使用黑白两色的棋子。两名玩家分别…

【竞技宝】欧冠:多特抢开局失败,皇马展示顶级防守反击

本赛季欧冠决赛结束,皇马在上半场被压制的情况下,2比0击败多特蒙德夺得队史第15座欧冠冠军奖杯。比赛中多特蒙德已经展现出了不俗的状态,可是面对老辣的皇马他们还是败下阵来,皇马用顶级的防守反击给多特上了一课。通过这场比赛,相信球迷们也清楚当今足坛硬实力不可或缺。 在许…

7-18 对象关系映射(orm_name)---PTA实验C++

一、题目描述 一开始看到对象关系映射&#xff0c;其实我是拒绝的。这三个词凑一块&#xff0c;能是给C初学者的题吗&#xff1f; 再仔细读需求&#xff0c;才发现在课设项目已经用过这功能。Object Relational Mapping&#xff08;ORM&#xff09;就是面向对象&#xff08;O…

《平渊》· 柒 —— 大道至简?真传一句话,假传万卷书!

《平渊》 柒 "真传一句话, 假传万卷书" 对于 "大道至简"&#xff0c;不少专家可能会说出一大堆乱七八糟的名词, 比如这样&#xff1a; 所谓 "大道" 即支撑天地运转的 "系统自动力"&#xff0c;更具体地来说&#xff0c;即是天地人以…

快手游戏《无尽梦回》官宣开测:热血动作肉鸽来袭

易采游戏网最新消息&#xff1a;5月30日11:00&#xff0c;快手自研的梦境主题动作冒险手游《无尽梦回》正式宣布开启测试。此次测试名为“肉鸽进化实验”&#xff0c;旨在测试多角色技能交会的玩法。游戏将开放32人同局竞技&#xff0c;让玩家在激烈的战斗中角逐出唯一的胜利者…

HTML如何让文字底部线条不紧贴在文字下面(既在内容下方又超出内容区域)

hello&#xff0c;大家好&#xff0c;星途星途今天给大家带来的内容是如何让文字底部线条不紧贴在文字下面。 话不多说&#xff0c;先上效果图 简单来说就是padding和margin的区别。 在网页设计中&#xff0c;有时我们想要给某个元素添加一个装饰性的线条&#xff0c;比如底部…

过滤器、监听器、拦截器的区别

过滤器、监听器、拦截器的区别 过滤器&#xff08;filter&#xff09;、监听器&#xff08;Listener&#xff09;是JavaWeb的三大组件。而拦截器&#xff08;Interceptor&#xff09;是Spring框架中的。 我们主要是要分清除过滤器和拦截器的区别&#xff1a; 实现原理&#…

overleaf 写参考文献引用

目录 1、 新建.bib 文件 2、导入引用 3、在文档中引用参考文献 4、生成参考文献列表 1、 新建.bib 文件 在Overleaf项目中&#xff0c;你可以选择导入现有的 .bib 文件或在项目中创建一个新的 .bib 文件来管理你的参考文献。 导入.bib 文件&#xff1a; 在项目文件树中点击…

11. RBAC权限管理从零到一实现(二)

前端页面已提交至git https://github.com/SJshenjian/cloud-web默认用户名密码admin 1

【自然语言处理】【Scaling Law】Observational Scaling Laws:跨不同模型构建Scaling Law

相关博客 【自然语言处理】【Scaling Law】Observational Scaling Laws&#xff1a;跨不同模型构建Scaling Law 【自然语言处理】【Scaling Law】语言模型物理学 第3.3部分&#xff1a;知识容量Scaling Laws 【自然语言处理】Transformer中的一种线性特征 【自然语言处理】【大…

jmeter性能优化之tomcat配置与基础调优

一、 修改tomcat初始和最大堆内存 进入到/usr/local/tomcat7-8083/bin目录下&#xff0c;编辑catalina.sh文件&#xff0c;&#xff0c;默认堆内存是600m&#xff0c;初始堆内存和最大堆内存保持一致&#xff0c; 可以更改到本机内存的70%&#xff0c;对于Linux系统&#xff0…

conda创建虚拟环境并激活

1 conda activate base 2 conda creat -n aaa python** 3 conda activate aaa 4 interpreter里面去选择刚搞好的编译器 ...../conda.exe

【SpringBoot】四种读取 Spring Boot 项目中 jar 包中的 resources 目录下的文件

本文摘要&#xff1a;四种读取 Spring Boot 项目中 jar 包中的 resources 目录下的文件 &#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。公粽号&#xf…

设计模式(十三)行为型模式---命令模式

文章目录 命令模式简介结构UML图具体实现UML图代码实现 命令模式简介 命令模式&#xff08;command pattern&#xff09;也叫动作模式或者事务模式。它是将请求&#xff08;命令&#xff09;封装成对象&#xff0c;使得可以用不同的请求对客户端进行参数化&#xff0c;具体的请…

MD中 面料的物理属性参数

该图片是Marvelous Designer软件中"Fabric Physical Properties"(面料物理属性)面板的截图,用于调整面料在弯曲、折叠时的硬度(Buckling Stiffness)。 目标部分解释了调整Buckling Stiffness的作用:通过调整该百分比值来决定面料角落处的硬度。进入80%的Buckling St…

NXP RT1060学习总结 - CANFD功能

1、RT1060-CAN FD功能简介 这里使用RT1060系列的1064芯片进行开发&#xff0c;测试板是官方提供的开发板&#xff1b;RT1060系列支持3路CAN功能&#xff0c;CAN1和CAN2只能最为普通的CAN外设&#xff0c;支持CAN2.0&#xff0c;而CAN3支持CAN-FD功能&#xff1b;CAN-FD功能这里…

CS和msf的权限传递,利用mimikatz抓取win10明文密码

一、Cobaltstrike的安装 http://t.csdnimg.cn/yhZin 安装CobaltStrike&#xff0c;浏览博主的上篇文章即可&#xff01;&#xff01;&#xff01; 这里我在自己的本机win11上执行了Client去连接kali中的Server端&#xff0c;直接执行.cmd文件即可&#xff01;&#xff01;&…