什么是使n个项目与相应的n个项目匹配的有效方式

这个问题在这里已经有了答案:

  • 两套物品。 集合A中的每个元素都是集合B中唯一的匹配。将集合A中的每个项目与集合B中O(nlogn)时间中的项目匹配1答案

  • 很好的问题,但因为它似乎是一个家庭作业之前,为什么你不尝试这样的事情:

    你应该循环每个瓶子(没有任何逻辑顺序),你应该有一个帽子结构,它是一个动态排序的瓶盖集合,这个阵列初始化只有一个元素(即集合B)。

    对于每个瓶子,当你获得“潜在”套瓶时,你应该使用Binary Search在你的排列中进行检测,然后检查瓶盖

  • 如果帽子较小,则让它放在同一组中(标记为不再为该瓶子服用
  • 对于第一个更大的上限,您需要在当前套餐和下一个套餐之间插入一个套餐,并将套餐放在那里
  • 对于以下更大的上限,您将它们放入先前创建的集合中
  • 如果你找到了正确的帽子,你会找到一个匹配的,然后继续用同一个瓶子分割剩余的瓶子,之后你继续下一个瓶子
  • 如果在当前设置中,您没有找到任何上限,但是您检查的所有上限都更高,您可以使用二进制搜索来查找较低的上限
  • 如果在目前的设置中你没有找到任何上限,但你检查的所有上限都较小,你可以使用二进制搜索旅行更大的上限
  • 编辑:我已经看过贴子,确实是两套物品的重复。 集合A中的每个元素都是集合B中唯一的匹配。将集合A中的每个项目与O(nlogn)时间中集合B中的项目相匹配,并在此解释解决方案http://www.wisdom.weizmann.ac.il/~ NAOR / PUZZLES / nuts_solution.html

    与我的很相似,但瓶子也可以分割。

    链接地址: http://www.djcxy.com/p/12203.html

    上一篇: What is an efficient way to match n items with corresponding n items

    下一篇: Visiting a supermarket with a shopping list, get all items in the fastest way?