当前位置: 首页 > article >正文

代码随想录 -- 贪心 -- 合并区间

56. 合并区间 - 力扣(LeetCode)

思路:

先按照左边界从大到小对数组进行排序;

遍历数组:如果当前遍历的区间左边界小于等于前一个区间的右边界,更新当前区间的左边界为最小的左边界,右边界为最大的右边界;如果没有重叠,就将前一个区间加入res中。

问题:最后一个区间没法加入res中,所以我在数组最后添加了一个元素[100000,100000]。

class Solution(object):
    def merge(self, intervals):
        intervals.sort(key=lambda x:(x[0],x[1]))
        intervals.append([100000,100000])
        res=[]
        for i in range(1,len(intervals)):
            if intervals[i][0]<=intervals[i-1][1]:
                intervals[i][0]=min(intervals[i-1][0],intervals[i][0])
                intervals[i][1]=max(intervals[i-1][1],intervals[i][1])
            else:
                res.append(intervals[i-1])
        return res

题解思路:

将排序后的第一个元素直接加入res中;

遍历数组:如果当前元素的左边界小于等于res中的最后一个元素的右边界,说明重叠,则更新res的最后一个元素的右边界为最大的右边界;否则直接将当前元素加入res中。

class Solution(object):
    def merge(self, intervals):
        intervals.sort(key=lambda x:(x[0],x[1]))
        res=[intervals[0]]
        for i in range(1,len(intervals)):
            if intervals[i][0]<=res[-1][1]:
                res[-1][1]=max(intervals[i][1],res[-1][1])
            else:
                res.append(intervals[i])
        return res


http://www.kler.cn/news/361799.html

相关文章:

  • 『完整代码』坐骑召唤
  • MP9928模块分析
  • Docker基础部署
  • 企业级 RAG 全链路优化关键技术
  • 考研读研生存指南,注意事项
  • 【Python数据库操作】使用SQLite和MySQL进行数据存储和查询!
  • 【ubuntu18.04】ubuntu18.04升级cmake-3.29.8及还原系统自带cmake操作说明
  • 计算机专业大学四年的学习路线(非常详细),零基础入门到精通,看这一篇就够了
  • 【WiFi 信道与频段的对应关系详解】
  • 基于KNN算法的指纹定位系统(MATLAB,平面,四个锚点)
  • mysql语句简单的使用
  • linux调用exit函数退出进程,变跟的文件内容会立即同步到磁盘吗
  • Qt之QCamera的简单使用
  • RHCE的练习(3)
  • JVM是什么,与Java的关系是什么,以及JVM怎么实现的跨平台性
  • ClickHouse基本原理
  • 全面解析P2P网络
  • python-docx -- Text文本的操作
  • 《嵌入式最全面试题-Offer直通车》目录
  • 原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
  • 7-7 求整数均值(C++)
  • 工业自动化为什么依赖光耦隔离器 --- 腾恩科技
  • 5G NR:BWP入门
  • Wordpress GutenKit 插件 远程文件写入致RCE漏洞复现(CVE-2024-9234)
  • 复习:React 中的 Diff 算法,原理是什么
  • 间充质干细胞疗法迎来快速发展:国内新药申请超93项,全球临床试验超1300项