给定一个整数数组nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。使用Java实现上述功能
时间: 2023-07-15 07:11:10 浏览: 101
JAVA 实现查找数组中的最大最小元素
4星 · 用户满意度95%
可以使用Kadane算法来解决这个问题,其时间复杂度为O(n)。该算法的基本思想是通过动态规划来寻找最大子数组和,具体实现如下:
```java
public int maxSubArray(int[] nums) {
int maxSum = nums[0];
int curSum = nums[0];
for (int i = 1; i < nums.length; i++) {
curSum = Math.max(nums[i], curSum + nums[i]);
maxSum = Math.max(maxSum, curSum);
}
return maxSum;
}
```
这里curSum表示以当前位置为结尾的最大子数组和,maxSum表示全局最大子数组和。每次遍历到一个新元素时,我们比较该元素与之前连续子数组的和加上该元素的和,取较大值作为新的curSum。同时,我们也需要将curSum与全局最大子数组和maxSum进行比较,更新maxSum的值。遍历完整个数组后,maxSum即为最大子数组和。
阅读全文