MCPcopy Create free account
hub / github.com/apna-college/Alpha / ContainerWithMostWater

Class ContainerWithMostWater

11_ArrayLists/ContainerWithMostWater.java:2–53  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1import java.util.ArrayList;
2public class ContainerWithMostWater {
3 //Brute Force - O(n^2)
4 public static int FMWC(ArrayList<Integer> height) {
5 int maxWater = 0;
6 for(int i=0; i<height.size(); i++) {
7 for(int j=i+1; j<height.size(); j++) {
8 int ht = Math.min(height.get(i), height.get(j)); //container ht
9 int width = j-i; //container width
10 int currWater = ht * width;
11 maxWater = Math.max(maxWater, currWater);
12 }
13 }
14
15 return maxWater;
16 }
17
18 //Optimized (2 pointer) - O(n)
19 public static int findMaxWaterContainer(ArrayList<Integer> height) {
20 int leftPtr = 0, rightPtr = height.size()-1;
21 int maxWater = 0;
22 while(leftPtr < rightPtr) {
23 int ht = Math.min(height.get(leftPtr), height.get(rightPtr));
24 int width = rightPtr-leftPtr;
25 int currWater = ht * width;
26 maxWater = Math.max(currWater, maxWater);
27
28 //move ptrs
29 if(height.get(leftPtr) < height.get(rightPtr)) {
30 leftPtr++;
31 } else {
32 rightPtr--;
33 }
34 }
35
36 return maxWater;
37 }
38 public static void main(String args[]) {
39 ArrayList<Integer> height = new ArrayList<>();
40 height.add(1);
41 height.add(8);
42 height.add(6);
43 height.add(2);
44 height.add(5);
45 height.add(4);
46 height.add(8);
47 height.add(3);
48 height.add(7);
49
50 System.out.println(FMWC(height));
51 System.out.println(findMaxWaterContainer(height));
52 }
53}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…