题解 | #公司食堂#

公司食堂

http://www.nowcoder.com/questionTerminal/601815bea5544f389bcd20fb5ebca6a8

Go的fmt输入老是超时,换成bufio的Scanner来输入就勉强可以通过测试。 时间复杂度应该是O(n),三个切片来维护就好了。


import (
	"bufio"
	"fmt"
	"os"
	"strconv"
)

func main() {
	var T, n, m int
	var sit, cus string
	in := bufio.NewScanner(os.Stdin)
	buf := make([]byte, 2e6)
	in.Buffer(buf, 2e6)
	in.Scan()
	T, _ = strconv.Atoi(in.Text())
	for ; T > 0; T-- {
		in.Scan()
		n, _ = strconv.Atoi(in.Text())
		in.Scan()
		sit = in.Text()
		in.Scan()
		m, _ = strconv.Atoi(in.Text())
		in.Scan()
		cus = in.Text()
		var one, zero, one_t []int
		for i := n - 1; i >= 0; i-- {
			if sit[i] == '0' {
				zero = append(zero, i+1)
			} else if sit[i] == '1' {
				one = append(one, i+1)
			}
		}
		for i := 0; i < m; i++ {
			if cus[i] == 'M' {
				if len(one) > 0 || len(one_t) > 0 {
					if len(one) > 0 && len(one_t) > 0 && one_t[0] < one[len(one)-1] {
						fmt.Printf("%d\n", one_t[0])
						one_t = one_t[1:]
					} else {
						if len(one) > 0 {
							fmt.Printf("%d\n", one[len(one)-1])
							one = one[:len(one)-1]
						} else {
							fmt.Printf("%d\n", one_t[0])
							one_t = one_t[1:]
						}
					}
				} else {
					fmt.Printf("%d\n", zero[len(zero)-1])
					one_t = append(one_t, zero[len(zero)-1])
					zero = zero[:len(zero)-1]
				}
			} else {
				if len(zero) > 0 {
					fmt.Printf("%d\n", zero[len(zero)-1])
					one_t = append(one_t, zero[len(zero)-1])
					zero = zero[:len(zero)-1]
				} else {
					if len(one) > 0 && len(one_t) > 0 && one_t[0] < one[len(one)-1] {
						fmt.Printf("%d\n", one_t[0])
						one_t = one_t[1:]
					} else {
						if len(one) > 0 {
							fmt.Printf("%d\n", one[len(one)-1])
							one = one[:len(one)-1]
						} else {
							fmt.Printf("%d\n", one_t[0])
							one_t = one_t[1:]
						}
					}
				}
			}
		}
	}
}

全部评论

相关推荐

已oc&nbsp;云智断更了好几天,也有一些话想说,继续更新一篇云智timeline&nbsp;4.18&nbsp;一面&nbsp;半个小时后约二面&nbsp;4.21二面&nbsp;当晚&nbsp;约hr面&nbsp;4.23hr面&nbsp;4.30&nbsp;发offer之前美团的二面挂了,进入人才库,后面又被捞起来面试,4.30号&nbsp;美团又一面,现在还没出一面结果感觉也不报什么希望,就算一面过了,还有二面,我经不起深入拷打,唉,真的,好难五一躺平了五天,吃吃玩玩睡睡~还要担心毕业,科研更是难,唉暑期可能就到此为止了,后面没有时间在这个上面了,要抓紧时间做科研,为了后面能出去实习。大厂,秋招再见!!!有一些感慨:4.1是我的第一次面试,美团,面试的时候紧张到浑身发...
daisy9542:我今晚也是美团一面,已经第六次了。我也面了其他的,没拿到 offer。但我想开了,要按照自己的节奏来,找暑期转正然后秋招大杀四方并不是唯一的出路,其实还有很多选择的,有 0 实习最后秋招拿 offer 了,也有不选择互联网去国企的外企的,考编的,创业的。现在的失败不代表以后的路都是黑暗的,只不过可能运气还没降临到头上。所以现在要做的,就是放平心态,提升自己,通过面试了解到自己的优点和不足,争取下次机会来了能好好抓住
点赞 评论 收藏
分享
喜欢疯狂星期四的猫头鹰在研究求职打法:短作业优先
点赞 评论 收藏
分享
04-18 15:58
已编辑
门头沟学院 设计
kaoyu:这一看就不是计算机的,怎么还有个排斥洗碗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务