Reviewed by Aditya Kumar · Last reviewed 2026-03-24
Water at i = min(left_max, right_max) - height[i]. Two pointers: maintain left_max, right_max; move from side with smaller max. Python: l,r=0,len(h)-1; lm=rm=w=0; while l<r: if h[l]<h[r]: lm=max(lm,h[l]); w+=lm-h[l]; l+=1; else: rm=max(rm,h[r]); w+=rm-h[r]; r-=1; return w. O(n)...
Water at i = min(left_max, right_max) - height[i]. Two pointers: maintain left_max, right_max; move from side with smaller max. Python: l,r=0,len(h)-1; lm=rm=w=0; while l<r: if h[l]<h[r]: lm=max(lm,h[l]); w+=lm-h[l]; l+=1; else: rm=max(rm,h[r]); w+=rm-h[r]; r-=1; return w. O(n) time, O(1) space. WHY: Two-pointer avoids extra arrays; single pass.
Red Flag: O(n) space solution when O(1) exists. Pro-Move: 'Two-pointer is optimal; explain invariants—water level bounded by min of both sides.'
According to DataEngPrep.tech, this is one of the most frequently asked General/Other interview questions, reported at 1 company. DataEngPrep.tech maintains an editor-reviewed database of 1,863 data engineering interview questions across 7 categories.