给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
代码:
// 动态规划
class Solution {
public int maxSubArray(int[] nums) {
int fi = 0, maxRes = nums[0]; //初始化
for(int x : nums) {
fi = Math.max(x, fi + x);
maxRes = Math.max(maxRes, fi);
}
return maxRes;
}
}
//贪心
class Solution {
public int maxSubArray(int[] nums) {
int maxRes = nums[0];
int sum = 0;
for(int x : nums) {
if(sum > 0) {
sum += x;
} else {
sum = x; // 等于x而不等于0
}
maxRes = Math.max(maxRes, sum);
}
return maxRes;
}
}
作者:哥们要飞