昨天,我正在从干净的洗衣店配对袜子,发现我的方法效率不高。我正在做一个天真的搜索——挑选一只袜子并“迭代”一堆以找到它的配对。这需要平均迭代n/2*n/4=n2/8只袜子。
作为一名计算机科学家,我在想我能做什么?排序(根据大小/颜色/…)当然想到了实现O(NlogN)解决方案。
哈希或其他不到位的解决方案不是一种选择,因为我无法复制我的袜子(尽管如果可以的话可能会很好)。
所以,问题基本上是:
给定一堆n
双袜子,包含2n
个元素(假设每只袜子正好有一对匹配的袜子),用最多对数的额外空间有效配对它们的最佳方法是什么?(如果需要,我相信我可以记住这个数量的信息。)
我希望你能回答以下几个方面的问题: