欢迎访问宙启技术站
智能推送

编写Java函数,计算数组中连续的最大子序列和

发布时间:2023-11-10 03:52:12

以下是一个计算数组中连续的最大子序列和的Java函数的实现:

public class MaxSubarraySum {
    public static int maxSubarraySum(int[] arr) {
        int maxSum = arr[0];  // 初始化最大子序列和为      个元素
        int currentSum = arr[0];  // 初始化当前子序列和为      个元素

        for (int i = 1; i < arr.length; i++) {
            currentSum = Math.max(arr[i], currentSum + arr[i]);  // 更新当前子序列和
            maxSum = Math.max(maxSum, currentSum);  // 更新最大子序列和
        }

        return maxSum;
    }

    public static void main(String[] args) {
        int[] arr = {1, -2, 3, 10, -4, 7, 2, -5};
        int maxSum = maxSubarraySum(arr);
        System.out.println("连续的最大子序列和为:" + maxSum);
    }
}

该函数使用了动态规划的思想。初始化最大子序列和和当前子序列和为数组的 个元素。然后从数组的第二个元素开始遍历,每次计算当前元素和当前子序列和的和,与当前元素本身进行比较,选择较大的值作为新的当前子序列和。同时,每次都将当前子序列和与最大子序列和进行比较,选择较大的值作为新的最大子序列和。最后返回最大子序列和,即为连续的最大子序列和。