考虑一组N瓶并设置N个瓶盖的B,这样A中的每个瓶子在B中都有唯一的瓶盖。 但A中的瓶子和B中的瓶盖看起来都一样。可以做的唯一比较是A中瓶子的对(a,b)和B中的瓶盖,并测试a的螺纹是否更小,更大或完美,螺纹为b。
提供一种有效的算法,将所有瓶子与瓶盖相匹配。
PS:这似乎我没有做任何事情来解决问题,相信我,我做到了。请给我一个答案。答案 0 :(得分:1)
不错的问题但是因为在它看起来像家庭作业之前已经指出了,为什么你不尝试这样的事情:
你应该为每个瓶子循环(没有任何逻辑顺序) 你应该有一种结构是一种动态排序的大写集合数组,这个数组初始化只有一个元素(即集合B)。
并且对于每个瓶子,当你获得“潜在的”上限时,你应该使用二进制搜索在你的阵列中旅行,你可以检查上限
编辑:我已经看到了发布的内容,实际上它是重复的 Two sets of items. Each element of set A a unique match in set B. Match each item of set A to item in set B in O(nlogn) time 这里解释了解决方案 http://www.wisdom.weizmann.ac.il/~naor/PUZZLES/nuts_solution.html
与我的相似,但瓶子也可以分开。