【发布时间】:2020-03-30 17:35:48
【问题描述】:
给定一个常量数组,其整数范围为 [1...N],数组长度为 N+1。 该数组包含至少一个副本,我们需要在恒定空间和线性时间中找到该副本,而不会破坏输入。 我被卡住了,然后我终于看到了使用弗洛伊德循环查找算法的解决方案,如何证明它有效?
【问题讨论】:
-
您能否具体说明您的解决方案是如何工作的?不同情况下的证明可能不同
-
顺便说一句,您可以计算从 1 到 N 的数字的 XOR,我们称之为 XOR1,然后 XOR2 将是您数组中数字的 XOR。那么你的副本等于 XOR1 XOR XOR2。
-
实际上我还没有解决它我已经看到他们使用弗洛伊德算法来检测循环并找到循环的入口点的解决方案,根据解决方案将始终是重复元素.
-
@Maras 但数组可以包含多个重复项,我认为 XOR 解决方案在这种情况下不起作用。
-
没关系,你是对的 ;)
标签: arrays algorithm optimization