昨天我在整理干净的衣服中的袜子,发现我所做的方法不太高效。 我正在进行一个朴素搜索——选取一只袜子并“迭代”堆以找到它的配对。这需要平均遍历n/2 * n/4 = n2/8只袜子。
作为一名计算机科学家,我在思考我该怎么做?排序(按照大小/颜色/...)当然是想到了实现O(NlogN)解决方案的方法。
哈希或其他非就地解决方案不是选择,因为我无法复制我的袜子(虽然如果我能这样做那会很好)。
所以,问题基本上是:
给定一个包含n
对袜子的堆,其中包含2n
个元素(假设每只袜子恰好有一个匹配对),使用多达对数额外空间有效地将它们配对的最佳方法是什么? (如果需要,我相信我可以记住那些信息的数量。)
我将感激回答以下方面的答案:
- 大量袜子的一般理论解决方案。
- 实际袜子的数量并不是很大,我不认为我和我的配偶拥有超过30双。 (而且区分我的袜子和她的袜子相当容易;这也可以使用吗?)
- 它是否等同于元素不同性问题?
waitpid
函数,这样作为父进程,你甚至不需要亲自整理任何袜子? - Mxyk