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

相关推荐
A懿轩A26 分钟前
C/C++ 数据结构与算法【数组】 数组详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·数组
古希腊掌管学习的神27 分钟前
[搜广推]王树森推荐系统——矩阵补充&最近邻查找
python·算法·机器学习·矩阵
云边有个稻草人30 分钟前
【优选算法】—复写零(双指针算法)
笔记·算法·双指针算法
半盏茶香31 分钟前
在21世纪的我用C语言探寻世界本质 ——编译和链接(编译环境和运行环境)
c语言·开发语言·c++·算法
忘梓.1 小时前
解锁动态规划的奥秘:从零到精通的创新思维解析(3)
算法·动态规划
tinker在coding4 小时前
Coding Caprice - Linked-List 1
算法·leetcode
XH华8 小时前
初识C语言之二维数组(下)
c语言·算法
南宫生8 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
不想当程序猿_8 小时前
【蓝桥杯每日一题】求和——前缀和
算法·前缀和·蓝桥杯
落魄君子9 小时前
GA-BP分类-遗传算法(Genetic Algorithm)和反向传播算法(Backpropagation)
算法·分类·数据挖掘