假设您正在运营一家交通网络公司。假设您有M驱动程序和N 一位司机只能接一位乘客,而一位乘客只能从1位乘坐 一次的驱动程序。为了使旅途舒适,您不允许驾驶员接客 与他的教育差异超过2年。请设计算法以 最大限度地增加驾驶员和乘客的比赛次数。
答案 0 :(得分:0)
算法:
您可以采取的一种贪婪方法是通过增加#年教育来对M个驾驶员和N个乘客列表进行排序。然后,您可以使用两个指针来分配对。从每个列表的开头开始,比较当前的驾驶员和乘客。如果他们的受教育程度小于等于2,则将两个配对,并同时增加两个指针。如果他们的教育水平> 2,则递增具有较低教育水平的指针并继续。一旦到达两个列表的末尾,就可以分配对了。这将分配有效的驾驶员-乘客对的最大数量。
运行时分析:
驱动程序排序:O(M log M)
乘客排序:O(N log N)
分配对:O(N + M)
运行时:O(M log M + N log N)
我希望这些信息对您有所帮助!