【算法题】不重叠线段

问题分析:
(1)先把数据整理一下,使a < b。
(2)贪心思想解决,以 线段末尾点b为关键字,进行排序。
(3)以第一个线段为开始,如果后续的线段的开始点,大于等于前一个线段的结束点,则计算器加一,
并更新,新的末尾点。依次遍历结束。
"""

def notRepeatline(nums, n):
    res = []
    count = 1
    for num in nums:
        if num[0] > num[1]:
            res.append(num[::-1])
        else:
            res.append(num)
    res = sorted(res, key= lambda x : x[1])  # 排序
    temp = res[0][1]
    for data in res:
        if temp <= data[0]:
            count += 1
            temp = data[1]    
    return count

if __name__ == '__main__':
    n = 3
    nums = [[6,3], [1,3], [2,5]]
    result = notRepeatline(nums, n)
    print(result)

 

相关文章: