add new solutions

This commit is contained in:
kanna5 2026-01-27 18:38:43 +09:00
parent 67cad91898
commit eb6ffe8114
No known key found for this signature in database
24 changed files with 933 additions and 14 deletions

View file

@ -0,0 +1,29 @@
package q84
func largestRectangleArea(heights []int) int {
var largest int
st := make([][2]int, 0, 256) // x index, height
for x, h := range heights {
minX := x
for len(st) > 0 && st[len(st)-1][1] > h {
largest = max(largest, st[len(st)-1][1]*(x-st[len(st)-1][0]))
minX = min(minX, st[len(st)-1][0])
st = st[:len(st)-1]
}
if len(st) > 0 && st[len(st)-1][1] == h {
continue
}
st = append(st, [2]int{minX, h})
}
for i := range st {
x, h := st[i][0], st[i][1]
largest = max(largest, h*(len(heights)-x))
}
return largest
}
var _ = largestRectangleArea