add new solutions
This commit is contained in:
parent
67cad91898
commit
51975f3386
24 changed files with 933 additions and 14 deletions
29
solutions/0/q84/solution.go
Normal file
29
solutions/0/q84/solution.go
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue