【代码随想录】【贪心算法】day36:无重叠子区间,划分字母区间,合并区间

python 复制代码
class Solution(object):
    def eraseOverlapIntervals(self, intervals):
        """
        :type intervals: List[List[int]]
        :rtype: int
        """

        intervals.sort(key=lambda x:x[0])
        count=0

        # 可以记录重叠子区间的个数,然后让整个数组的长度减去重叠的个数
        # 需要去维护右边界是最小的那个,左边界是最大的那个
        #left=intervals[0][0]
        right=intervals[0][1]

        for i in range(1,len(intervals)):
            # 如果没有重叠
            if intervals[i][0] >= right:
                right=intervals[i][1]
                # left=intervals[i][0]

            else:
                count+=1
                right=min(right,intervals[i][1])

        return count

划分

python 复制代码
class Solution(object):
    def partitionLabels(self, s):
        """
        :type s: str
        :rtype: List[int]
        """
        # 不能排序
        # 统计每个字符最后出现的位置

        # 循环,如果遍历的当前字母的位置和最后出现的位置相同,则找到一个分割点
        last={}
        max_last=0
        result=[]
        start=0
        for i in range(len(s)):
            last[s[i]]=i

        for i in range(len(s)):
            max_last=max(max_last,last[s[i]])
            if i==max_last:

                result.append(max_last-start+1)
                start=i+1
        return result

合并区间

记得排序,记得和result[-1][1]作比较

python 复制代码
class Solution(object):
    def merge(self, intervals):
        """
        :type intervals: List[List[int]]
        :rtype: List[List[int]]
        """
    # 如果下一个的left  小于上一个的right 那就是合并
    # 一定要进行更新
   
        intervals.sort(key=lambda x:x[0])

        result=[]
        result.append(intervals[0])
        

        for i in range(1,len(intervals)):
            # 如果不重叠
            if intervals[i][0] > result[-1][1]:
                result.append(intervals[i])
                
            else:
                result[-1][1]=max(result[-1][1],intervals[i][1])
                
        return  result
相关推荐
杨小码不BUG19 小时前
蛇形舞动:矩阵填充的艺术与算法(洛谷P5731)
c++·算法·矩阵·csp-j/s·循环控制
MicroTech202519 小时前
微算法科技(NASDAQ:MLGO)开发延迟和隐私感知卷积神经网络分布式推理,助力可靠人工智能系统技术
人工智能·科技·算法
Boop_wu21 小时前
[数据结构] Map和Set
java·数据结构·算法
林鸿群21 小时前
Apple M3 MacOS arm64 编译QGroundControl5.0.8(base on Qt 6.8.3)
macos·ios·qgc·qgroundcontrol
思考的笛卡尔1 天前
密码学基础:RSA与AES算法的实现与对比
网络·算法·密码学
2501_916013741 天前
iOS 推送开发完整指南,APNs 配置、证书申请、远程推送实现与上架调试经验分享
android·ios·小程序·https·uni-app·iphone·webview
2501_915909061 天前
HTML5 与 HTTPS,页面能力、必要性、常见问题与实战排查
前端·ios·小程序·https·uni-app·iphone·html5
格林威1 天前
常规线扫描镜头有哪些类型?能做什么?
人工智能·深度学习·数码相机·算法·计算机视觉·视觉检测·工业镜头
程序员莫小特1 天前
老题新解|大整数加法
数据结构·c++·算法