【LeetCode】53. Maximum Subarray
来源:互联网 发布:深圳代理注册公司 知乎 编辑:程序博客网 时间:2024/06/05 18:54
问题描述
https://leetcode.com/problems/maximum-subarray/#/description
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
For example, given the array [-2,1,-3,4,-1,2,1,-5,4]
,
the contiguous subarray [4,-1,2,1]
has the largest sum = 6
.
计算数组中的最大子串和。
算法分析
参考自:https://discuss.leetcode.com/topic/7447/o-n-java-solution
因为数组中有正数也有负数,每加一个正数,子串值增加,每加一个负数,子串值减少,所以,应该尽量跳过负数。
下面使用sum
表示从左往右遍历数组时的当前较大子串和,总之,当前的那个数必须计算在sum
中。sum
初始化为nums[0]
,接下来遍历到位置1
,有如下情况:
- 如果
nums[0]>=0
,则sum = sum + nums[1]
- 如果
nums[0]<0
,则sum = nums[1]
,
同理,有一般式:sum = nums[i] + (sum<0?0:sum)
使用max
记录sum
变化过程中的最大值,即为答案。
代码
public int maxSubArray(int[] nums) { int max = Integer.MIN_VALUE, sum = 0; for (int i = 0; i < nums.length; i++) { sum = nums[i] + (sum < 0 ? 0:sum); max = sum > max ? sum:max; } return max; }
0 0
- [LeetCode]53.Maximum Subarray
- LeetCode --- 53. Maximum Subarray
- [Leetcode] 53. Maximum Subarray
- [leetcode] 53.Maximum Subarray
- 【leetcode】53. Maximum Subarray
- [leetcode] 53.Maximum Subarray
- 【leetcode】53. Maximum Subarray
- LeetCode 53. Maximum Subarray
- [LeetCode]53. Maximum Subarray
- 53. Maximum Subarray LeetCode
- [LeetCode]53. Maximum Subarray
- leetcode 53. Maximum Subarray
- [leetcode] 53. Maximum Subarray
- LeetCode *** 53. Maximum Subarray
- 【LeetCode】53. Maximum Subarray
- leetcode 53. Maximum Subarray
- LeetCode 53. Maximum Subarray
- Leetcode:53. Maximum Subarray
- 二维数组的遍历
- Mac显示隐藏文件方法
- Ubuntu 16.04 安装 tweak 及 Flatabulous 主题美化
- redis desktop manager 连不上
- MYSQL在不同系统下重置密码
- 【LeetCode】53. Maximum Subarray
- LeetCode 7. Reverse Integer
- LeetCode 12. Integer to Roman
- RAID-Node
- LeetCode 13. Roman to Integer
- java日期
- BurnCtrl刻录控制组件 光驱过滤驱动
- 刷清橙OJ--A1015.杨辉三角形
- spring springmvc mybatis整合搭建