leetcode面试题59
Posted cherrytab
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode面试题59相关的知识,希望对你有一定的参考价值。
双端队列
实际上就是一个每次push pop的常规queue和另一个首位是最大值的queue
type MaxQueue struct { Queue []int Max []int Size int } func Constructor() MaxQueue { return MaxQueue{ Queue: []int{}, Max: []int{}, Size: 0, } } func (this *MaxQueue) Max_value() int { if this.Size == 0 { return -1 } return this.Max[0] } func (this *MaxQueue) Push_back(value int) { this.Queue = append(this.Queue, value) if this.Size == 0 { this.Max = append(this.Max, value) } else { if value > this.Max[0] { this.Max = this.Max[0:0] this.Max = append(this.Max, value) this.Size++ return } for i := len(this.Max) - 1; this.Max[i] < value; i-- { this.Max = this.Max[:i] } this.Max = append(this.Max, value) } this.Size++ } func (this *MaxQueue) Pop_front() int { if this.Size == 0 { return -1 } num := this.Queue[0] if num == this.Max[0] { this.Max = this.Max[1:] } this.Queue = this.Queue[1:] this.Size-- return num }
end
以上是关于leetcode面试题59的主要内容,如果未能解决你的问题,请参考以下文章