实现思路:先排序,然后循环遍历,挨着和前面的比

  • 如果出现的当前组的 end 比下一组的 start大,则返回false
  • 如果循环正常结束,则没有问题,返回true

举例说明:[[0,10],[10,20],[15,30]]

  • 其中[0,10]是第一组,0为第一组的start,10为第一组的end
  • 第二组:[10,20], start: 10, end: 20
  • 第三组:[15,30],start: 15, end: 30

循环到第二组时会发现,第二组的end大于第三组的start,返回false

c++实现

class Solution {
public:
    bool hostschedule(vector<vector<int> >& schedule) {
        // write code here
        sort(schedule.begin(), schedule.end());
        for(int i=0; i<schedule.size()-1; i++){
            if(schedule[i][1] > schedule[i+1][0]){
                return false;
            }
        }
        return true;
    }
};

python实现

class Solution:
    def hostschedule(self , schedule: List[List[int]]) -> bool:
        # write code here
        schedule.sort()
        for i in range(len(schedule)-1):
            if schedule[i][1] > schedule[i+1][0]:
                return False
        return True