我知道这已经问过了,但我无能为力,所以我希望有人能够以一种非常简单的方式向我解释这一点。
问题:
一个人站在无限长的墙前。墙的另一侧是他试图前往的城镇。在墙上的某个地方是一扇门,这个家伙可以向左或向右走找到它。
我需要编写一个具有线性运行时的算法,但我只是无法弄清楚…非常感谢您的帮助!
不知道如何暗示答案而不只是放弃它。
您知道您不能“无限左”走,然后,如果失败,就一直走直到找到门。出来了
因此,要找到所有的门,您将需要向左走一点,然后转身回到起点,向右走一点,然后用越来越大的比特重复。
然后的问题是,您能想到一种增加“位”大小的方法,以使整体运行时间(即所有“位”的总和直至足以找到门的位)是线性的吗?
您已经在评论中说过,如果每次增加1,那么复杂度就太高了(实际上是O(n ^ 2),不是指数级,但仍然太大)。因此,请寻求更好的进度,以减少总的动手次数。