feat: osijvrsoi

This commit is contained in:
2026-03-06 19:17:30 -05:00
parent 2cac846a4d
commit aad6f3e91f
43 changed files with 136 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)
}