题目描述:
Given an integer array nums
, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.
Example:
Input: [-2,1,-3,4,-1,2,1,-5,4],
Output: 6
Explanation: [4,-1,2,1] has the largest sum = 6.
Follow up:
If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.
题目解释:
给出一个数组,找到和最大的相邻子矩阵并返回这个和。
跟进:
如果你有一个时间复杂度为O(n)的解,尝试用分而治之的方法解决。
题目解法:
1.我的解法,先来个正常思路:遍历整个数组,从这个数组第一个元素开始,于后面的元素全部相加,一旦有和超过最大值的数组,就赋值最大值为这个和,直到遍历结束,时间复杂度是O(n^2)。代码如下:
class Solution {
public int maxSubArray(int[] nums) {
int sum = nums[0];
for(int i = 0 ;i < nums.length;i++){
int temp = nums[i];
if(temp > sum) sum = temp;
for(int j = i + 1; j < nums.length;j++) {
temp += nums[j];
if(temp > sum) sum = temp;
}
}
return sum;
}
}
2.想想时间复杂度为O(n)的方法,待续