版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xfjjs_net/article/details/84844188
我自己写的就两种暴力法。
暴力法1 时间复试杂O(n3)
public static int maxSubArray(int[] nums) {
int len = nums.length;
if (len == 0) {
return 0;
}
int max = Integer.MIN_VALUE;
int sum;
for (int i = 0; i < len; i++) {
for (int j = i; j < len; j++) {
sum = 0;
for (int k = i; k <=j; k++) {
sum += nums[k];
}
if (sum > max) {
max = sum;
}
}
}
return max;
}
改进的暴力法 时间复杂度O(n2)
public static int maxSubArray2(int[] nums) {
int max = Integer.MIN_VALUE;
int sum;
for (int i = 0; i < nums.length; i++) {// 子序列左端点
sum = 0;
for (int j = i; j < nums.length; j++) {// 子序列右端点
sum += nums[j];// 这里就相当于每次根据前一次的序列来计算新的序列
if (sum > max)
max = sum;
}
}
return max;
}