mirror of
https://github.com/wahyd4/topx.git
synced 2026-08-09 05:06:02 +10:00
29 lines
805 B
Go
29 lines
805 B
Go
package calculator
|
|
|
|
type LargestNumbersHeap []int
|
|
|
|
func (biggestNumbers LargestNumbersHeap) Less(first, second int) bool {
|
|
// pop the smallest number
|
|
return biggestNumbers[first] < biggestNumbers[second]
|
|
}
|
|
|
|
func (biggestNumbers LargestNumbersHeap) Len() int {
|
|
return len(biggestNumbers)
|
|
}
|
|
|
|
func (biggestNumbers LargestNumbersHeap) Swap(first, second int) {
|
|
biggestNumbers[first], biggestNumbers[second] = biggestNumbers[second], biggestNumbers[first]
|
|
}
|
|
|
|
func (biggestNumbers *LargestNumbersHeap) Push(x interface{}) {
|
|
*biggestNumbers = append(*biggestNumbers, x.(int))
|
|
}
|
|
|
|
func (biggestNumbers *LargestNumbersHeap) Pop() interface{} {
|
|
oldNumbers := *biggestNumbers
|
|
arrayLength := len(oldNumbers)
|
|
number := oldNumbers[arrayLength-1]
|
|
*biggestNumbers = oldNumbers[0 : arrayLength-1]
|
|
return number
|
|
}
|