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

相关推荐

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