leetcode算法53.最大子数组和
👏👏👏
哈喽!大家好,我是【学无止境小奇】,一位热爱分享各种技术的博主!😍😍😍
⭐【学无止境小奇】的创作宗旨:每一条命令都亲自执行过,每一行代码都实际运行过,每一种方法都真实实践过,每一篇文章都良心制作过。✊✊✊
⭐【学无止境小奇】的博客中所有涉及命令、代码的地方,除了提供图片供大家参考,另外会在图片下方提供一份纯文本格式的命令或者代码方便大家粘贴复制直接执行命令或者运行代码。🤝🤝🤝
⭐如果你对技术有着浓厚的兴趣,欢迎关注【学无止境小奇】,欢迎大家和我一起交流。😘😘😘
❤️❤️❤️感谢各位朋友接下来的阅读❤️❤️❤️
一、leetcode算法
1、 最大子数组和
1.1、题目
给你一个整数数组 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.2、思路
思路一:本题可以使用动态规划来解决问题,这里要求出最大和的连续数组的值,也就是说不用返回数组对象,只用返回最大的值就可以了,那我们就可以将数组中前面的值大于0的话我们就加到我们当前的数组值中,如果小于0就不加到当前的值上,例如数组【1,-2,3】,我们首先拿到1判断他大于0,那我们就用1加上后面的-2,等于-1,判断他小于0 ,这个时候我们就不需要再用-1加上后面的3了,我们直接用后面的3来作为起始值,因为加上前面的值只会让总值变小,所以就根据这样的规则来进行计算。
1.3、答案
class Solution {
public int maxSubArray(int[] nums) {
int pre = 0, maxAns = nums[0];
for(int x : nums){
pre = Math.max(pre + x, x);
maxAns = Math.max(maxAns, pre);
}
return maxAns;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
文章来源: xiaoqijava.blog.csdn.net,作者:学无止境小奇,版权归原作者所有,如需转载,请联系作者。
原文链接:xiaoqijava.blog.csdn.net/article/details/122936341
- 点赞
- 收藏
- 关注作者
评论(0)