我的问题是关于 FB HackerCup 2013 QualificationRound 问题 - BalancedSmileys。
问题陈述:https ://www.facebook.com/hackercup/problems.php?pid=403525256396727&round=185564241586420 (也复制到这里:https ://github.com/anuragkapur/Algorithmic-Programming/tree/master/src/com /anuragkapur/fb/hackercup2013/qr#problem-2-balanced-smileys)
我想出了如何使用具有指数运行时间的 BruteForce 方法来解决这个问题。
根据发布的官方解决方案,有一个线性运行时间的解决方案。此处描述:https ://www.facebook.com/notes/facebook-hacker-cup/qualification-round-solutions/598486173500621
本质上,它维护两个计数器:minOpen 和 maxOpen。每当遇到左括号“(”时,maxOpen 就会增加。如果“(”不是笑脸的一部分,minOpen 也会增加。处理“)”的类似策略也是如此,如上面的解释链接中所述。
我可以看到线性时间方法有效,但在我的脑海中并不清楚 - 怎么样?所以我正在调查这个小组,看看是否有人可以给出线性运行时间解决方案的替代“解释”。
非常感谢!