当前位置:网站首页>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;
}
}
边栏推荐
- Ng DevUI 周下载量突破1000啦!
- [免费专栏] Android安全之Android Fragment注入
- IMX6ULL—Assembly LED Lights
- ThreadLocal 夺命 11 连问,万字长文深度解析
- ceph 创建池和制作块设备基操
- RT-Thread推荐入围国赛及群体挑战赛名单
- [免费专栏] Android安全之数据存储与数据安全【大集合】
- 开源一夏 | 基于若依架构的列表详情展示
- 第三方bean使用ConfigurationProperties注解获取yml配置文件数据 & 获取yml配置文件数据的校验
- Bi Sheng Compiler Optimization: Lazy Code Motion
猜你喜欢
Cortex-A7 MPCore Architecture
[免费专栏] Android安全之数据存储与数据安全【大集合】
对数学直观、感性的认知是理解数学、喜爱数学的必经之路,这本书做到了!
李乐园:iMetaLab Suite宏蛋白质组学数据分析与可视化(视频+PPT)
How to stop the test after reaching a given number of errors during stress testing in JMeter
MQTT X Web:在线的 MQTT 5.0 客户端工具
Cortex-A7 MPCore 架构
mysql如何查看所有复合主键的表名?
没有 accept,建立 TCP 连接,可以吗?
JSDN blog system
随机推荐
IDEA工具常用配置
书单 | “推荐系统” 值得一读的五本书
5.3.6 原子操作对非原子的操作排序
ASP.NET Core依赖注入之旅:针对服务注册的验证
ceph 创建池和制作块设备基操
苦日子快走开
LeetCode笔记:Weekly Contest 305
5.4 总结
发布sensor_msgs/Range数据
LeetCode做题小结
智驾科技完成C1轮融资,此前2轮已融4.5亿元
单调栈
没有 accept,TCP 连接可以建立成功吗?
Redis很大的时候,key 要如何处理?
anno arm移植Qt环境后,编译正常,程序无法正常启动问题的记录
loadrunner脚本--参数化
从功能测试到自动化测试你都知道他们的有缺点吗?
PHP 变量注释/**@var*/
单片机编程-状态机
线性代数学习笔记