现在修Eavestroughs时机合适吗?# Living
h*8
1 楼
请教Leetcode Maximum Subarray 如果加两个条件,怎么解:
1. 打印Start和End,这个比较容易。
2. 返回的Subarray的长度要大于1。(追问如果是大于N呢?)
以下是我的大于1的code,各位有没有更好的解法?
public int maxSubWithSizeGreaterThanOne(int[] nums) {
if (nums.length < 2) {
return 0;
}
int maxStart = 0;
int maxEnd = 1;
int start = 0;
int sum = nums[0] + nums[1];
int max = sum;
for (int i=2; i sum = Math.max(sum+nums[i], nums[i-1]+nums[i]);
if (sum == nums[i-1]+nums[i]) {
start = i-1;
}
max = Math.max(max, sum);
if (max == sum) {
maxStart = start;
maxEnd = i;
}
}
System.out.println("start and end are " + maxStart + " " + maxEnd);
return max;
}
1. 打印Start和End,这个比较容易。
2. 返回的Subarray的长度要大于1。(追问如果是大于N呢?)
以下是我的大于1的code,各位有没有更好的解法?
public int maxSubWithSizeGreaterThanOne(int[] nums) {
if (nums.length < 2) {
return 0;
}
int maxStart = 0;
int maxEnd = 1;
int start = 0;
int sum = nums[0] + nums[1];
int max = sum;
for (int i=2; i
if (sum == nums[i-1]+nums[i]) {
start = i-1;
}
max = Math.max(max, sum);
if (max == sum) {
maxStart = start;
maxEnd = i;
}
}
System.out.println("start and end are " + maxStart + " " + maxEnd);
return max;
}