尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

53. 最大子数组和

发布时间:2026/9/20 10:27:36

资讯中心
01
ARTICLE

53. 最大子数组和

53. 最大子数组和
题目描述给你一个整数数组numsnumsnums请你找出一个具有最大和的连续子数组子数组最少包含一个元素返回其最大和。子数组是数组中的一个连续部分。示例 1输入nums [-2,1,-3,4,-1,2,1,-5,4]输出6解释连续子数组 [4,-1,2,1] 的和最大为 6 。示例 2输入nums [1]输出1示例 3输入nums [5,4,-1,7,8]输出23算法原理这道题属于子数组问题子数组问题可以用动态规划解决一般从某一个位置为结尾或起点开始思考状态表示以iii位置为结尾dp[i]dp[i]dp[i]表示以iii位置为结尾的所有连续子数组的最大和状态转移方程以iii位置为结尾的连续子数组可以分为两类第一类是长度等于111的它的最大和是nums[i]nums[i]nums[i]第二类是长度大于111的它去掉nums[i]nums[i]nums[i]后就是以i−1i-1i−1位置为结尾的连续子数组最大和就是dp[i−1]dp[i - 1]dp[i−1]。加上nums[i]nums[i]nums[i]后它的最大和就是dp[i−1]nums[i]dp[i-1] nums[i]dp[i−1]nums[i]根据这两点可以得到dp[i]max(nums[i],dp[i−1]nums[i])dp[i] max(nums[i], dp[i - 1] nums[i])dp[i]max(nums[i],dp[i−1]nums[i])初始化多使用一个空间将dp[0]dp[0]dp[0]初始化为000。由于多了一个空间dpdpdp数组整体右移了一格填表时注意原数组下标的映射填表顺序从左到右返回值连续子数组以哪个位置为结尾都是可能的所以要返回dpdpdp数组的最大值代码classSolution{public:intmaxSubArray(vectorintnums){intnnums.size(),maxElementINT_MIN;vectorintdp(n1,0);for(inti1;in;i){dp[i]max(dp[i-1]nums[i-1],nums[i-1]);maxElementmax(dp[i],maxElement);}returnmaxElement;}};
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。