1
+ class TwoPointers {
2
+ /**
3
+ * Move Zeroes using Two Pointers
4
+ * @param {number[] } nums - Input array
5
+ */
6
+ moveZeroesTwoPointers ( nums ) {
7
+ let left = 0 ; // Pointer for placing non-zero elements
8
+
9
+ // Iterate with right pointer
10
+ for ( let right = 0 ; right < nums . length ; right ++ ) {
11
+ if ( nums [ right ] !== 0 ) {
12
+ // Swap elements if right pointer finds a non-zero
13
+ [ nums [ left ] , nums [ right ] ] = [ nums [ right ] , nums [ left ] ] ;
14
+ left ++ ; // Move left pointer forward
15
+ }
16
+ }
17
+ }
18
+
19
+ /**
20
+ * Brute Force approach for Container with Most Water
21
+ * @param {number[] } height - Array of heights
22
+ * @return {number } - Maximum water that can be contained
23
+ */
24
+ maxAreaBruteForce ( height ) {
25
+ let maxArea = 0 ;
26
+ let n = height . length ;
27
+
28
+ // Check all pairs (i, j)
29
+ for ( let i = 0 ; i < n ; i ++ ) {
30
+ for ( let j = i + 1 ; j < n ; j ++ ) {
31
+ // Compute the minimum height and width
32
+ let minHeight = Math . min ( height [ i ] , height [ j ] ) ;
33
+ let width = j - i ;
34
+ let area = minHeight * width ; // Compute water contained
35
+
36
+ maxArea = Math . max ( maxArea , area ) ; // Update max water
37
+ }
38
+ }
39
+ return maxArea ;
40
+ }
41
+
42
+ /**
43
+ * Two Pointers approach for Container with Most Water
44
+ * @param {number[] } height - Array of heights
45
+ * @return {number } - Maximum water that can be contained
46
+ */
47
+ maxAreaTwoPointers ( height ) {
48
+ let left = 0 , right = height . length - 1 ;
49
+ let maxArea = 0 ;
50
+
51
+ // Move pointers toward each other
52
+ while ( left < right ) {
53
+ let width = right - left ; // Distance between lines
54
+ let minHeight = Math . min ( height [ left ] , height [ right ] ) ; // Compute height
55
+ let area = minHeight * width ; // Compute water contained
56
+
57
+ maxArea = Math . max ( maxArea , area ) ; // Update max water
58
+
59
+ // Move the pointer pointing to the shorter height
60
+ if ( height [ left ] < height [ right ] ) {
61
+ left ++ ; // Move left pointer forward
62
+ } else {
63
+ right -- ; // Move right pointer backward
64
+ }
65
+ }
66
+ return maxArea ;
67
+ }
68
+ }
0 commit comments