Skip to content

Commit

Permalink
152. Maximum Product Subarray
Browse files Browse the repository at this point in the history
  • Loading branch information
shamstabrez16 committed Oct 16, 2023
1 parent 5c8a8d3 commit ff4efed
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 0 deletions.
14 changes: 14 additions & 0 deletions src/main/java/Array/MaximumProductSubarray.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package Array;
public class MaximumProductSubarray {
public int maxProduct(int[] nums) {
int max =nums[0];
int currentMax = nums[0], currentMin = nums[0];
for (int i = 1; i < nums.length; i++) {
int tempMax = currentMax;
currentMax = Math.max(Math.max(currentMax *nums[i], currentMin*nums[i]),nums[i] );
currentMin = Math.min(Math.min(tempMax*nums[i],currentMin*nums[i]), nums[i]);
max = Math.max(currentMax,max);
}
return max;
}
}
35 changes: 35 additions & 0 deletions src/test/java/TestMaximumProductSubarray.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import Array.MaximumProductSubarray;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

public class TestMaximumProductSubarray {

private MaximumProductSubarray maximumProductSubarray;

@Before
public void SetUp() {
maximumProductSubarray = new MaximumProductSubarray();
}

@Test
public void TestCase1() {
int[] nums = {2, 3, -2, 4};
int expectedOutput = 6;
Assert.assertEquals(expectedOutput,maximumProductSubarray.maxProduct(nums));
}

@Test
public void TestCase2() {
int[] nums = {-2,0,-1};
int expectedOutput = 0;
Assert.assertEquals(expectedOutput,maximumProductSubarray.maxProduct(nums));
}
@Test
public void TestCase3() {
int[] nums = {2,-5,-2,-4,3};
int expectedOutput = 24;
Assert.assertEquals(expectedOutput,maximumProductSubarray.maxProduct(nums));
}

}

0 comments on commit ff4efed

Please sign in to comment.