【leetcode】757. Set Intersection Size At Least Two

题目如下:

解题思路:贪心算法。首先把intervals按第二个元素从小到大排序,然后遍历intervals,如果集合S和intervals[i]没有交集,那么把intervals[i]的最大值和次大值加入集合S;如果交集只有一个元素,则把最大值加入S。

代码如下:

class Solution(object):
    def intersectionSizeTwo(self, intervals):
        """
        :type intervals: List[List[int]]
        :rtype: int
        """
        import bisect
        def cmpf(l1,l2):
            if l1[1] != l2[1]:
                return l1[1] - l2[1]
            return l2[0] - l1[0]
        intervals.sort(cmp=cmpf)
        res = None
        for low,high in intervals:
            if low == 29 and high == 37:
                pass
            if res == None:
                res = [high-1,high]
            elif res[-1] < low:
                #res[1] = low + 1
                res.append(high-1)
                res.append(high)
            elif res[-1] == low:
                res.append(high)
            elif bisect.bisect_right(res,high) -  bisect.bisect_left(res,low)  == 1:
                res.append(high)
            #print res
        #print intervals
        #print res
        return len(res)

 

转载于:https://www.cnblogs.com/seyjs/p/9718414.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值