leetcode中如何找到最大子序和
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,小编给大家分享一下leetcode中如何找到最大子序和,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!题目链接https:/
千家信息网最后更新 2026年11月01日leetcode中如何找到最大子序和
小编给大家分享一下leetcode中如何找到最大子序和,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
题目链接
https://leetcode-cn.com/problems/maximum-subarray/
题目描述
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4],
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
进阶:
如果你已经实现复杂度为 O(n)的解法,尝试使用更为精妙的分治法求解。
解题方案
思路
标签:动态规划
这道题用动态规划的思路并不难解决,比较难的是后文提出的用分治法求解,但由于其不是最优解法,所以先不列出来
动态规划的是首先对数组进行遍历,当前最大连续子序列和为sum,结果为ans
如果
sum > 0,则说明sum对结果有增益效果,则sum保留并加上当前遍历数字如果
sum <= 0,则说明sum对结果无增益效果,需要舍弃,则sum直接更新为当前遍历数字每次比较
sum和ans的大小,将最大值置为ans,遍历结束返回结果时间复杂度:O(n)
代码
Java版本
class Solution {
public int maxSubArray(int[] nums) {
int ans = nums[0];
int sum = 0;
for(int num: nums) {
if(sum > 0) {
sum += num;
} else {
sum = num;
}
ans = Math.max(ans, sum);
}
return ans;
}
}
JavaScript版本
/**
* @param {number[]} nums
* @return {number}
*/
var maxSubArray = function(nums) {
let ans = nums[0];
let sum = 0;
for(const num of nums) {
if(sum > 0) {
sum += num;
} else {
sum = num;
}
ans = Math.max(ans, sum);
}
return ans;
};
画解

以上是"leetcode中如何找到最大子序和"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
最大
数组
结果
动态
篇文章
规划
复杂
内容
复杂度
思路
效果
数字
版本
解法
题目
精妙
不怎么
代码
元素
后文
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
保险科技 互联网保险
互联网科技图片
湖南永感互联网科技有限公司
互联网和科技创新
奇酷互联网科技
互联网科技排名
天津摩尔互联网科技
兼蜜互联网科技
长亮科技 互联网金融
互联网科技公司招聘
小米互联网科技园设置
金融科技与互联网金融相同和不同
银川新华互联网科技学校联系电话
华夏恒生互联网科技013171
烟台灵鸽互联网科技有限公司
东营紫格互联网科技
广州燕处互联网科技有限公司
10位科技互联网大佬
瑞安市蟠桃会互联网科技有限公司
科技发展第三阶段互联网时代
上海喔噻互联网科技有限公司
广州百单互联网科技有限公司
科技互联网项目
互联网巨头反垄断金融科技
西安互联网科技
一五八零互联网科技
朱啸虎曾投资哪些互联网科技企业
深圳无忧互联网科技
互联网科技创新创业项目
互联网领先科技成果宣传视频