算法第四章作业
贪心策略:将所有区间按照右端点从小到大排序,如果右端点相同,则按照左端点从小到大排序。从排序后的第一个区间开始,在其右端点放置一个点,然后跳过所有包含该点的区间,继续处理剩余区间中右端点最小的区间,重复上述过程,直到所有区间都被覆盖。
证明:每次都选最早结束的区间,在它结束的时刻放点,这样能“一箭多雕”,而且不会错过最优解。
时间复杂度:1.排序:使用快速排序或归并排序,时间复杂度为 O(nlogn)
2.遍历选点:仅需一次线性扫描,时间复杂度为 O(n)。
综上,算法总时间复杂度为 O(nlogn)
总之贪心算法是一种在每一步选择中都采取当前状态下最优(即局部最优)的选择,从而希望导致全局最优解的算法策略。解决问题的最好办法就是每次都选最早要结束的事情,在它结束的时刻去处理。这样既不会耽误它,又能顺便处理其他正在发生的事情。
浙公网安备 33010602011771号