题解 | #最大体重的牛#
最大体重的牛
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] }