add: 220219 [golang]
This commit is contained in:
parent
b3505f0c05
commit
cdb4eb86a3
|
|
@ -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}))
|
||||||
|
}
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
module golang
|
module golang
|
||||||
|
|
||||||
go 1.18
|
go 1.18
|
||||||
|
|
||||||
|
require github.com/emirpasic/gods v1.12.0
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue