feat: monday

This commit is contained in:
2026-01-12 19:38:01 -05:00
parent f3abe4ff5b
commit 5fb803129f
2 changed files with 62 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
package trapping_rain_water
func Trap(heights []int) int {
// Calculate area taken up by the boundary.
boundary_area := 0
for _, height := range heights {
boundary_area += height
}
// Calculate the total area taken up by the boundary and the water.
total_area := 0
left := 0
left_height := 0
right := len(heights) - 1
right_height := 0
for left <= right {
left_height = max(left_height, heights[left])
right_height = max(right_height, heights[right])
if left_height < right_height {
total_area += left_height
left++
} else {
total_area += right_height
right--
}
}
return total_area - boundary_area
}

View File

@@ -0,0 +1,31 @@
package trapping_rain_water
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestTrap_Example1(t *testing.T) {
height := []int{0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1}
expected := 6
result := Trap(height)
assert.Equal(t, expected, result)
}
func TestTrap_Example2(t *testing.T) {
height := []int{4, 2, 0, 3, 2, 5}
expected := 9
result := Trap(height)
assert.Equal(t, expected, result)
}
func TestTrap_Example3(t *testing.T) {
height := []int{0}
expected := 0
result := Trap(height)
assert.Equal(t, expected, result)
}