public int[] findMax (int[] nums) {
int[] tmp = new int[nums.length];
int min = 0, max = 0;
tmp[0] = nums[0];
for (int i = 1; i < nums.length; i++) {
if (tmp[i - 1] < 0) {
tmp[i] = nums[i];
}
else {
tmp[i] = nums[i] + tmp[i - 1];
}
if (tmp[max] < tmp[i])
max = i;
}
for (int i = max; i >= 0; i--) {
if (nums[i] < 0) {
min = i + 1;
break;
}
}
return Arrays.copyOfRange(nums, min, max + 1);
}
写最大和的连续子数组,最小值实在想不出怎么在一个循环里搞出来了。