实现一个函数,用于寻找给定数组中的最大子数组和(动态规划)

实现一个函数,用于寻找给定数组中的最大子数组和

public class MaxSubArraySum {

    // 主函数,用于测试
    public static void main(String[] args) {
        int[] nums = {-2, 1, -3, 4, -1, 2, 1, -5, 4};
        System.out.println("最大子数组和为: " + findMaxSubArraySum(nums));
    }

    /**
     * 寻找给定数组中的最大子数组和
     * @param nums 整型数组
     * @return 最大子数组的和
     */
    public static int findMaxSubArraySum(int[] nums) {
        if (nums == null || nums.length == 0) {
            return 0; // 如果数组为空或长度为0,返回0
        }

        int currentSum = nums[0]; // 当前子数组的和初始化为第一个元素
        int maxSum = nums[0]; // 最大子数组和初始化为第一个元素

        for (int i = 1; i < nums.length; i++) { // 从第二个元素开始遍历
            // 更新当前子数组的和,如果加上当前元素比当前元素本身小,则重新开始计数
            currentSum = Math.max(nums[i], currentSum + nums[i]);
            // 更新最大子数组和,如果当前子数组和比之前记录的最大和还要大,则更新最大和
            maxSum = Math.max(maxSum, currentSum);
        }

        return maxSum;
    }
}
posted @ 2024-06-27 23:27  fchhk  阅读(6)  评论(0编辑  收藏  举报