用Java语言编写代码,给定由 n 个整数(可能为负整数)组成的序列,求解其连续的最大字段和。当所有数都是负整数时,最大字段和是 0 . 如:a[] = {-2, 11, -4, 13, -5, -2}时, max = 11 + (-4) + 13 = 20.
时间: 2024-09-28 20:11:05 浏览: 61
在 Java 中,计算数组连续最大子数组和可以使用 Kadane's 算法(也称为动态规划算法)。这个算法的基本思想是从左到右遍历数组,对于每个元素,有两种选择:要么将其加入当前子数组,要么开始一个新的子数组。如果加上当前元素后的和大于0,则继续添加;否则,从该元素开始一个新的子数组。
以下是 Java 代码实现:
```java
public class MaxSubArraySum {
public static int maxSubArray(int[] nums) {
if (nums == null || nums.length == 0) {
return 0;
}
int curMax = nums[0]; // 当前子数组最大值
int globalMax = nums[0]; // 最大子数组和
for (int i = 1; i < nums.length; i++) {
curMax = Math.max(nums[i], curMax + nums[i]); // 更新当前最大子数组和
globalMax = Math.max(globalMax, curMax); // 更新全局最大和
}
return globalMax;
}
public static void main(String[] args) {
int[] a = {-2, 11, -4, 13, -5, -2};
System.out.println("最大连续子数组和: " + maxSubArray(a)); // 输出:20
}
}
```
在这个例子中,`maxSubArray()` 函数接收一个整数数组作为输入,并返回最大子数组和。`main()` 方法展示了如何调用这个函数并打印结果。
阅读全文