码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode面试题59

时间:2020-03-07 20:41:23      阅读:53      评论:0      收藏:0      [点我收藏+]

标签:面试题   ==   双端队列   另一个   tco   else   leetcode   etc   size   

 

双端队列

 

实际上就是一个每次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

标签:面试题   ==   双端队列   另一个   tco   else   leetcode   etc   size   

原文地址:https://www.cnblogs.com/CherryTab/p/12436403.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!