LEETCODE-DAY36


title: LEETCODE-DAY36

date: 2024-03-27 18:49:59
tags:

今日内容:435. 无重叠区间、763.划分字母区间、56. 合并区间

T1

思路类似DAY35 T3

python 复制代码
class Solution:
    def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:
        intervals.sort()
        j=0
        for i in range(len(intervals)):
            if i>0 and intervals[i][0]<intervals[i-1][1]:
                #因为要使j尽可能小,故把较大的上界对应的区间remove
                intervals[i][1]=min(intervals[i][1],intervals[i-1][1])
                j+=1
        return j

AC

T2

python 复制代码
class Solution:
    def partitionLabels(self, s: str) -> List[int]:
        last_occurrence = {}  # 存储每个字符最后出现的位置
        for i, ch in enumerate(s):
            last_occurrence[ch] = i

        result = []
        start = 0
        end = 0
        for i, ch in enumerate(s):
            end = max(end, last_occurrence[ch])  # 找到当前字符出现的最远位置
            if i == end:  # 如果当前位置是最远位置,表示可以分割出一个区间
                result.append(end - start + 1)
                start = i + 1

        return result
python 复制代码
python 复制代码
python 复制代码

T3

python 复制代码
class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
            res=list()
            intervals.sort()
            for i in range(len(intervals)):
                if i>0 and intervals[i][0]<=intervals[i-1][1]:
                    intervals[i][0]=intervals[i-1][0]
                    intervals[i][1]=max(intervals[i][1],intervals[i-1][1])
                elif i>0 and intervals[i][0]>intervals[i-1][1]:
                    res.append(intervals[i-1])

            return res

输入

intervals =

[[1,3],[2,6],[8,10],[15,18]]

输出

[[1,6],[8,10]]

预期结果

[[1,6],[8,10],[15,18]]

输入

intervals =

[[1,4],[4,5]]

输出

[]

预期结果

[[1,5]]

python 复制代码
class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
            res=list()
            intervals.sort()
            for i in range(len(intervals)):
                if i>0 and intervals[i][0]<=intervals[i-1][1]:
                    intervals[i][0]=intervals[i-1][0]
                    intervals[i][1]=max(intervals[i][1],intervals[i-1][1])
                elif i>0 and intervals[i][0]>intervals[i-1][1]:
                    res.append(intervals[i-1])
            res.append(intervals[i])

            return res

AC

相关推荐
周杰伦_Jay几秒前
简洁明了:介绍大模型的基本概念(大模型和小模型、模型分类、发展历程、泛化和微调)
人工智能·算法·机器学习·生成对抗网络·分类·数据挖掘·transformer
凭君语未可13 分钟前
豆包MarsCode:小C点菜问题
算法
C语言魔术师33 分钟前
【小游戏篇】三子棋游戏
前端·算法·游戏
自由自在的小Bird33 分钟前
简单排序算法
数据结构·算法·排序算法
王老师青少年编程7 小时前
gesp(C++五级)(14)洛谷:B4071:[GESP202412 五级] 武器强化
开发语言·c++·算法·gesp·csp·信奥赛
DogDaoDao7 小时前
leetcode 面试经典 150 题:有效的括号
c++·算法·leetcode·面试··stack·有效的括号
Coovally AI模型快速验证8 小时前
MMYOLO:打破单一模式限制,多模态目标检测的革命性突破!
人工智能·算法·yolo·目标检测·机器学习·计算机视觉·目标跟踪
可为测控8 小时前
图像处理基础(4):高斯滤波器详解
人工智能·算法·计算机视觉
Milk夜雨9 小时前
头歌实训作业 算法设计与分析-贪心算法(第3关:活动安排问题)
算法·贪心算法
BoBoo文睡不醒9 小时前
动态规划(DP)(细致讲解+例题分析)
算法·动态规划