leetcode中如何找到最大子序和
发表于:2024-10-12 作者:千家信息网编辑
千家信息网最后更新 2024年10月12日,小编给大家分享一下leetcode中如何找到最大子序和,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!题目链接https:/
千家信息网最后更新 2024年10月12日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安全错误
数据库的锁怎样保障安全
长春乾航网络技术有限公司怎么样
红包大佛服务器
视频弹幕数据库设计
生态网络技术产业化
java软件开发 培训
数据库的设计要求
浙江软件开发产品介绍
美股 估值最高的网络安全公司
配置yum服务器
网络安全配置与防护第一阶段
京科深圳联通网络技术有限
网络安全联盟联系方式
数据库表容量上限
赤峰市网络安全知识答题
南京智能化服务器厂商
服务器和plc交换机通讯
服务器共享和存储管理不能启动
池州咖啡点餐软件开发哪家好
以网络安全为题目的论文
网络安全三大龙头
血吼数据库
打印服务器格式不能锁定
数据库技术第二版概要设计总结
派出所网络安全自检自查报告
中网彩网络技术
网络安全宣教手抄报
数据库外键怎么写编码
电视机显示内部服务器错误
前线信息网络技术有限公司
网络安全发言稿手写400字