首页 > Java > java教程 > Java中的最大子阵列总和:Kadane的算法

Java中的最大子阵列总和:Kadane的算法

Barbara Streisand
发布: 2025-02-07 11:54:19
原创
825 人浏览过

>让我们学习如何使用java中的kadane算法有效地找到最大子阵列总和。

问题语句:

给定尺寸n的数组,编写一个Java程序,以确定使用Kadane算法的连续子阵列的最大总和。

>示例:

<code>Input:
n = 5
arr[] = 1, 2, 3, -2, 5

Output:
Maximum Subarray sum is: 9</code>
登录后复制

了解Kadane的算法: Kadane的算法提供了有效的O(n)时间复杂度解决方案,以找到最大的子阵列总和。

步骤:

>初始化两个变量:
    (跟踪当前子阵列的总和)和
  1. (存储到目前为止遇到的最大总和)。 设置

    到0和currentSum到最小的整数值(例如,maxSum)。currentSum> maxSum Integer.MIN_VALUE

    迭代通过数组:对于每个元素
  2. ,将其值添加到
  3. >。

    > arr[i] currentSum

    > update
  4. :每次添加后,更新
  5. 最大

    maxSum>。maxSum>。 maxSum currentSum

    reset
  6. :如果
  7. 变为负​​,则将其重置为0。这很重要,因为负

    表明包括先前的元素不会造成更大的总和;最好从当前元素启动一个新的子阵列。currentSum currentSum currentSum

  8. > java代码:

>输出(示例):

import java.util.Scanner;

public class KadaneAlgo {
    public static int findMaxSubArraySum(int[] arr, int n) {
        int currentSum = 0;
        int maxSum = Integer.MIN_VALUE; // Initialize to the smallest possible integer

        for (int i = 0; i < n; i++) {
            currentSum += arr[i];
            maxSum = Math.max(maxSum, currentSum); // Update maxSum if necessary
            if (currentSum < 0) {
                currentSum = 0; // Reset currentSum if it becomes negative
            }
        }
        return maxSum;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter the size of the array: ");
        int n = scanner.nextInt();
        int[] arr = new int[n];
        System.out.print("Enter the elements of the array: ");
        for (int i = 0; i < n; i++) {
            arr[i] = scanner.nextInt();
        }
        int maxSum = findMaxSubArraySum(arr, n);
        System.out.println("Maximum Subarray sum is: " + maxSum);
        scanner.close();
    }
}
登录后复制

以上是Java中的最大子阵列总和:Kadane的算法的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
java可以做为web的后端吗?
来自于 1970-01-01 08:00:00
0
0
0
安装JAVA
来自于 1970-01-01 08:00:00
0
0
0
无法安装java
来自于 1970-01-01 08:00:00
0
0
0
java - php调取webservice的map类型,如果封装?
来自于 1970-01-01 08:00:00
0
0
0
这个是Java语言的吗
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板