add: 220219 [golang]

This commit is contained in:
Lam Haoyin 2022-02-20 00:06:00 +08:00
parent b3505f0c05
commit cdb4eb86a3
No known key found for this signature in database
GPG Key ID: 8C089CB1A2B7544F
2 changed files with 48 additions and 0 deletions

46
golang/2202/220219.go Normal file
View File

@ -0,0 +1,46 @@
package main
import (
"fmt"
"github.com/emirpasic/gods/trees/binaryheap"
"github.com/emirpasic/gods/utils"
)
func minimumDeviation(nums []int) int {
maxHeap := binaryheap.NewWith(func(a, b interface{}) int {
return -utils.IntComparator(a, b)
})
min, ret := 0x7FFFFFFF, 0x7FFFFFFF
for _, v := range nums {
if v&1 == 1 {
v <<= 1
}
maxHeap.Push(v)
if min > v {
min = v
}
}
// fmt.Println(maxHeap.Values())
for {
xInterface, _ := maxHeap.Pop()
x := xInterface.(int)
if x&1 == 1 {
if x-min < ret {
return x - min
}
return ret
}
if ret > x-min {
ret = x - min
}
if min > (x >> 1) {
min = x >> 1
}
maxHeap.Push(x >> 1)
}
}
func main() {
fmt.Println(minimumDeviation([]int{4, 1, 5, 20, 3}))
}

View File

@ -1,3 +1,5 @@
module golang
go 1.18
require github.com/emirpasic/gods v1.12.0