当前位置:网站首页>2022.08.06_每日一题
2022.08.06_每日一题
2022-08-09 18:00:00 【诺.い】
53. 最大子数组和
题目描述
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
子数组 是数组中的一个连续部分。
示例 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
提示:
1 <= nums.length <= 105-104 <= nums[i] <= 104
进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的 分治法 求解。
coding
用 pre 记录局部最优值,用 max 记录全局最优值。
每遍历一个新元素时,判断(已遍历的连续子数组的和)加上(当前元素值),与(当前元素值)对比谁更大。
(1)如果已遍历的连续子数组的和 + 当前元素值 >= 当前元素值
说明(已遍历的连续子数组的和)是大于等于0的,令 pre= 已遍历的连续子数组的和 + 当前元素值。
(2)如果已遍历的连续子数组的和 + 当前元素值 < 当前元素值
说明(已遍历的连续子数组的和)是小于0的,加上这部分只会使子数组和变得更小,故可直接抛弃掉这部分,令 pre = 当前元素值。
(3)对比 pre 和 max,如果 pre 更大,则更新到 max 中。
class Solution {
public int maxSubArray(int[] nums) {
int pre = 0;
int max = nums[0];
for (int i = 0; i < nums.length; i ++) {
pre = Math.max(pre + nums[i], nums[i]);
max = Math.max(pre, max);
}
return max;
}
}
边栏推荐
- [免费专栏] Android安全之GDB动态调试APP
- 基于AWS构建云上数仓第一步:云平台的基础概念
- 第三方bean使用ConfigurationProperties注解获取yml配置文件数据 & 获取yml配置文件数据的校验
- VIT transformer详解
- 国产抗新冠口服药每瓶不超300元/ 我国IPv6网络全面建成/ 谷歌入局折叠屏手机...今日更多新鲜事在此...
- ThreadLocal 夺命 11 连问,万字长文深度解析
- 5.4 总结
- 如何抑制告警风暴?
- 解决启动项目初始化报错required a bean of type ‘int‘ that could not be found.的问题
- InfluxDB语法
猜你喜欢
随机推荐
软件设计的七大原则
[免费专栏] Android安全之ZIP文件目录遍历漏洞
ceph 创建池和制作块设备基操
目录
史上最全架构师知识图谱(纯干货)
CreateCompatibleDC用法
正则表达式(全)
[免费专栏] Android安全之GDB动态调试APP
一些自动化测试01
再次开始清理电子海图开发群中长期潜水人士
MQTT X Web:在线的 MQTT 5.0 客户端工具
从功能测试到自动化测试你都知道他们的有缺点吗?
ARM Assembly Basics
苦日子快走开
Go-Excelize API源码阅读(五)—— Close()
Simple prohibition of garbage collection in d
YOLO v3 source, rounding
JSDN blog system
5.4 总结
Ros简介








