leetcode中如何找到最大子序和
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,小编给大家分享一下leetcode中如何找到最大子序和,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!题目链接https:/
千家信息网最后更新 2025年01月24日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安全错误
数据库的锁怎样保障安全
网络安全保密工作会议
数据库技术与应用笔记
楠兔网络技术工作室
多平台文件服务器
广州海游网络技术有限公司
南京中兴智能家庭软件开发部
图说网络安全2019
怀来县运营服务器
国际经合组织oecd数据库
网络安全属于国家哪个部委管
网络安全空间测绘方向
逃离塔科夫北方极限服务器
派出所建dna数据库
将文件上传到服务器的协议
1.9服务器
用友财务报表显示不能连接服务器
网络安全dos模板
数据库餐厅菜单表
平谷区正规软件开发优势
数据库连接池工具
数据库批量注册码
spring读取数据库锁
mysql 查询数据库空
一台服务器宕机切换
烟草专卖数据库qc课题
湖南移动城管软件开发系统
汽车网络技术在线阅读
住房数据库
c 数据库 多线程
杭州掌盛网络技术有限公司