小编典典

Java:如何在一维图中找到孔?

algorithm

我知道这已经问过了,但我无能为力,所以我希望有人能够以一种非常简单的方式向我解释这一点。

问题:

一个人站在无限长的墙前。墙的另一侧是他试图前往的城镇。在墙上的某个地方是一扇门,这个家伙可以向左或向右走找到它。

我需要编写一个具有线性运行时的算法,但我只是无法弄清楚…非常感谢您的帮助!


阅读 325

收藏
2020-07-28

共1个答案

小编典典

不知道如何暗示答案而不只是放弃它。

您知道您不能“无限左”走,然后,如果失败,就一直走直到找到门。出来了

因此,要找到所有的门,您将需要向左走一点,然后转身回到起点,向右走一点,然后用越来越大的比特重复。

然后的问题是,您能想到一种增加“位”大小的方法,以使整体运行时间(即所有“位”的总和直至足以找到门的位)是线性的吗?

您已经在评论中说过,如果每次增加1,那么复杂度就太高了(实际上是O(n ^ 2),不是指数级,但仍然太大)。因此,请寻求更好的进度,以减少总的动手次数。

2020-07-28