April.16.2022——53. 最大子序和
53. 最大子序和
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
解题思路
- 贪心算法
- 遍历数组,遍历的同时不断累加 记和为count
- 如果加上 nums[i] 后count的和为负数,那就让count 的和为0
- 取一个全局变量 使用Math.max()方法,时刻进行比较。
代码实现
class Solution {
public int maxSubArray(int[] nums) {
if(nums.length == 1){
return nums[0];
}
int count = 0;
int sum = Integer.MIN_VALUE;
for(int i = 0;i<nums.length;i++){
count += nums[i];
sum = Math.max(sum,count);
if(count<= 0){
count =0;
}
}
return sum;
}}