题解 | #最大体重的牛#

最大体重的牛

https://www.nowcoder.com/practice/0333d46aec0b4711baebfeb4725cb4de

package main


/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param op string字符串一维数组
 * @param vals int整型二维数组
 * @return int整型一维数组
 */
func max_weight_cow( op []string ,  vals [][]int ) []int {
    // write code here
    ans :=make([]int, 0)
    if len(op)==0{
        return ans
    }
    stack := NewMaxCowStack()
    for key,val :=range op{
        switch val{
            case "MaxCowStack" :
                stack =NewMaxCowStack()
                ans = append(ans,-1)
            case "push" :
                stack.push(vals[key][0],vals[key][1])
                ans = append(ans,-1)
            case "pop" :
                stack.pop()
                ans = append(ans,-1)
            case "top" :
                ans = append(ans, stack.top())
            case "getMax" :
                ans = append(ans, stack.getMax())
        }
    }
    return ans
}

type MaxCowStack struct{
    Stack []int
    Maxstack []int
}

func NewMaxCowStack() *MaxCowStack{
    return &MaxCowStack{}
}

func (s *MaxCowStack) push(id int,weight int){
    s.Stack=append(s.Stack, weight)
    if len(s.Maxstack)==0||weight>=s.Maxstack[len(s.Maxstack)-1]{
        s.Maxstack=append(s.Maxstack, weight)
    }
}

func (s *MaxCowStack) pop(){
    if len(s.Stack)==0{
        return 
    }

    weight :=s.Stack[len(s.Stack)-1]
    s.Stack=s.Stack[:len(s.Stack)-1]

    if weight==s.Maxstack[len(s.Maxstack)-1]{
        s.Maxstack=s.Maxstack[:len(s.Maxstack)-1]
    }
    return
}

func (s *MaxCowStack) top() int{
    if len(s.Stack)==0{
        return -1
    }
    return s.Stack[len(s.Stack)-1]
}

func (s *MaxCowStack) getMax() int{
    if len(s.Maxstack)==0{
        return -1
    }
    return s.Maxstack[len(s.Maxstack)-1]
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务