5.25 美团笔试

一、根据出栈入栈序列判断是否为合法的栈,剑指Offer31

package main

import (
	"fmt"
)

func main() {
	var T int
	fmt.Scanln(&T)

	for i := 0; i < T; i++ {
		var n int
		fmt.Scanln(&n)
		in := make([]int, n)
		out := make([]int, n)

		for j := 0; j < n; j++ {
			fmt.Scanf("%d", &in[j])
		}

		for j := 0; j < n; j++ {
			fmt.Scanf("%d", &out[j])
		}

		if isStack(in, out) {
			fmt.Println("Yes")
		} else {
			fmt.Println("No")
		}

	}

}

func isStack(pushed []int, popped []int) bool {
	stk := make([]int, 0)
	i := 0

	for _, v := range pushed {
		stk = append(stk, v)
		for len(stk) > 0 && stk[len(stk)-1] == popped[i] {
			stk = stk[:len(stk)-1]
			i++
		}
	}

	return len(stk) == 0

}

二、分糖果

剩下的整理好再写

#美团##美团笔试#
全部评论
lz试过用递归来解吗
点赞 回复 分享
发布于 2023-05-30 09:57 江苏
楼主拿到offer了吗
点赞 回复 分享
发布于 2023-05-30 09:06 山东

相关推荐

在打卡的大老虎很想潜...:你在找实习,没啥实习经历,技术栈放前面,项目多就分两页写,太紧凑了,项目你最多写两个,讲清楚就行,项目背景。用到的技术栈、亮点、难点如何解决,人工智能进面太难了,需求少。你可以加最新大模型的东西
点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务