这道贪心题主要在于如何将数组排序才能使其参加尽量多的比赛
所以我们每回选择的对象都应该是对后续影响最小的,结束时间最早的比赛对后面的影响最小在结束時间相同的情况下,哪场比赛持续的时间短哪场比赛就对我们有利,就应该排在前面
所以在排序的时候,要考虑两个因素根据结束嘚时间和持续的时间进行排序。
定义last为最早的结束时间在循环中向后找,直到找到一场比赛的开始时间大于等于last就可以参加这场比赛,result + 1然后把last更新为当下的比赛的结束时间,继续循环重复上述过程
本题的突破点在于排序的方式,如果能想到按结束时间排序就不难寫出程序。AC也不再困难
排序时要使用快排或者归并,c++自带sort和python自带的sorted都可以满足时间的要求时间复杂度为o(n2)的排序会超时。
删除线格式 溜了溜了~~
发布了7 篇原创文章 · 获赞 0 · 访问量 281