1.问题描述
2.解决办法
1.动态规划
特点:
- 找出最优解的性质,并刻画结构特征。
- 递归定义最优值
- 以自底向上的方式计算最优值。
- 根据计算最优值时得到的信息,构造最优解。
2.问题分析
如果前一个数是大于0的则加到本数上
-2,1,-3,4,-1,2,1,-5,4
-2,1,-2,4,3,5,6,1,5
然后挑出新数组最大的即可
3.代码实现
class Solution {
public int maxSubArray(int[] nums) {
for(int i=1; i<nums.length;i++){
if(nums[i-1]>0){
nums[i]+=nums[i-1];
}
}
Arrays.sort(nums);
return nums[nums.length-1];
}
}
官方代码:
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;
}
}
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/maximum-subarray/solution/zui-da-zi-xu-he-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。