题目描述:
输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。
要求时间复杂度为O(n)。
示例:
思路:
利用动态规划的思路解决问题,首先定义最大值为 nums[0] 和最大和 sum 。再试用循环,判断最大的值。在这个算法中,时间复杂度为 O(n).
代码如下:
class Solution {
public int maxSubArray(int[] nums) {
int max = nums[0];//定义最小值
int sum = nums[0];//定义最大和
for(int i = 1;i<nums.length;i++){
sum = Math.max(nums[i],sum+nums[i]);
max = Math.max(max,sum);
}
return max;
}
}