E题官方题解,了解一下?

这里是E题的出题人~~~

至比赛结束,共有334名同学尝试提交过这一道题目,其中有201名同学通过了这道题目,得到了100分。

------这---是---分---割---线------

题解:
我们先考虑如何通过80%的数据。
记录一个量,cnt,表示目前未匹配的左括号数量。对于每个左括号,我们将cnt+1,对于每个右括号,我们将cnt-1。
如果在某一个位置cnt小于0,则表示这个位置的右括号前面没有一个与之匹配的左括号,我们需要从后面找一个左括号与它交换。(读者可以思考一下为什么这样做)
不难看出,如同例二的数据,达到了时间复杂度的上限,无法通过本题。
然而,聪明的读者可以发现我们这个做法的瓶颈——为了寻找一个左括号,我们使用了过多的时间。
不妨从两端向中间进行上述操作,从左到右,cnt1记录的是未匹配的左括号数量,这样我们可以找到第一个未匹配的右括号;从右到左,cnt2记录的是未匹配的右括号数量,这样我们可以找到第一个未匹配的左括号。最后,我们只需要将这两个括号交换一下就好了嘛。
全部评论
然而E是原题……qwq
点赞 回复 分享
发布于 2018-09-06 22:58
qaq
点赞 回复 分享
发布于 2018-09-06 23:07

相关推荐

03-02 16:31
已编辑
合肥工业大学 golang
程序员鼠鼠_春招版:学历可以,项目普通,评价多余,奖项没有,如果有面试都是因为学历给你的,我建议可以随便包几个奖项上去,像什么蓝桥杯天梯赛,虽然不一定有用,但是相比acm这种风险小多了,我几段实习下来,压根没查的,第二点是包一段小厂实习,大厂你不好拿捏,小厂打打杂也能让你在26里面出彩一点
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务