我正在尝试解决一个有趣的编程难题
有几个访客到电影租赁店并想租电影。每人最多可租借 2 部电影。然而,租赁公司只能租用每部电影的 1 份。为了解决这个问题,租赁公司要求每个人提供他们想要租用的电影的愿望清单。每个人最多可以提供10个愿望。根据人们提供的愿望清单,租赁公司希望提出一个解决方案,以便每个人都可以得到一个独特的电影租赁。
输入:
一个包含两列的文本文件,
column1 有 perosn Id,column2 有他们想要租借的电影 ID。
每个人最多可以有 10 个条目,并且文件可能未排序。解决方案
- 逐行读取整个文件并创建一个人与请求电影列表的地图。
- 根据请求的电影数量对地图中的条目进行排序。
- 遍历排序列表,然后如果该特定电影没有分配给其他人(为此目的使用 HashSet),则从列表中将最多 2 部电影分配给一个人。
该算法适用于合理的文件大小。但如果输入文件非常大,我会收到内存不足错误。具体来说,在尝试将数据存储在地图中时。我还有其他方法可以采取吗?可能不需要读取内存中的整个文件。