力扣】56. 合并区间

1. 题目介绍

数组 intervals 表示若干个区间集合,其中单个区间intervals[i] = [starti, endi] 。请你合并所有重叠区间,并返回 一个重叠区间数组该数组需恰好覆盖输入中的所有区间

在这里插入图片描述

2. 解法

2.1 方法一:标志位

由于,数字范围是小的,因此可以通过设置标志位,遍历数组,将对应区间置为0,

class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        n = len(intervals)
        lst = [0] * 20002
        for i in range(n):
            tmp = intervals[i]
            for j in range(2*tmp[0], 2*tmp[1]+1):
                lst[j] = 1
        res = []
        i = 0
        while i < 20002:
            if lst[i] == 1:
                tmp = [0] * 2
                tmp[0] = int(i/2)
                while lst[i]==1:
                    i += 1
                i -= 1
                tmp[1] = int(i/2)
                res.append(tmp)
            i += 1
        return res

2.2 方法二:排序 + 遍历

# class Solution:
#     def merge(self, intervals: List[List[int]]) -&gt; List[List[int]]:
#         intervals.sort(key=lambda x: x[0])

#         merged = []
#         for interval in intervals:
#             # 如果列表为空,或者当前区间与上一区间不重合,直接添加
#             if not merged or merged[-1][1] < interval[0]:
#                 merged.append(interval)
#             else:
#                 # 否则的话,我们可以与上一区间进行合并
#                 merged[-1][1] = max(merged[-1][1], interval[1])

#         return merged

3. Danger

力扣(LeetCode)是领扣网络旗下专注于程序员技术成长和企业技术人才服务品牌。源自美国硅谷,力扣为全球程序员提供了专业的IT技术职业化提升平台,有效帮助程序员实现快速进步和长期成长。此外,力扣(LeetCode)致力于解决程序员技术评估、培训、职业匹配的痛点,逐步引领互联网技术求职和招聘迈向专业化。

参考

【1】https://leetcode.cn/problems/merge-intervals/

原文地址:https://blog.csdn.net/qq_51392112/article/details/134654520

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_14439.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注