From ddf898fe0b64de04c088a2eb1d8d1118b6894b5e Mon Sep 17 00:00:00 2001 From: anuragkumawat Date: Wed, 1 Jun 2022 21:05:22 +0530 Subject: [PATCH] JAVA-12383 GitHub Issue: Incorrect results in Kadane Algorithm for Maximal Subarray --- .../algorithms/maximumsubarray/KadaneAlgorithm.java | 2 +- .../maximumsubarray/KadaneAlgorithmUnitTest.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/algorithms-modules/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/maximumsubarray/KadaneAlgorithm.java b/algorithms-modules/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/maximumsubarray/KadaneAlgorithm.java index 60171220cd..202912a1af 100644 --- a/algorithms-modules/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/maximumsubarray/KadaneAlgorithm.java +++ b/algorithms-modules/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/maximumsubarray/KadaneAlgorithm.java @@ -14,7 +14,7 @@ public class KadaneAlgorithm { int end = 0; int maxSoFar = arr[0], maxEndingHere = arr[0]; - for (int i = 0; i < size; i++) { + for (int i = 1; i < size; i++) { if (arr[i] > maxEndingHere + arr[i]) { start = i; diff --git a/algorithms-modules/algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/maximumsubarray/KadaneAlgorithmUnitTest.java b/algorithms-modules/algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/maximumsubarray/KadaneAlgorithmUnitTest.java index 71531dcf59..8dcc81bc5b 100644 --- a/algorithms-modules/algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/maximumsubarray/KadaneAlgorithmUnitTest.java +++ b/algorithms-modules/algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/maximumsubarray/KadaneAlgorithmUnitTest.java @@ -27,4 +27,16 @@ class KadaneAlgorithmUnitTest { //then assertEquals(-1, maxSum); } + + @Test + void givenArrayWithAllPosiitveNumbersWhenMaximumSubarrayThenReturnsExpectedResult() { + //given + int[] arr = new int[] {4, 1, 3, 2}; + //when + KadaneAlgorithm algorithm = new KadaneAlgorithm(); + int maxSum = algorithm.maxSubArraySum(arr); + //then + assertEquals(10, maxSum); + } + } \ No newline at end of file