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

相关推荐
野犬寒鸦1 分钟前
JVM垃圾回收机制面试常问问题及详解
java·服务器·开发语言·jvm·后端·算法·面试
风酥糖7 分钟前
Godot游戏练习01-第16节-游戏中的状态机
算法·游戏·godot
参.商.9 分钟前
【Day45】647. 回文子串 5. 最长回文子串
leetcode·golang
budingxiaomoli10 分钟前
优选算法--优先级队列(堆)
算法
Trouvaille ~12 分钟前
【优选算法篇】哈希表——空间换时间的极致艺术
c++·算法·leetcode·青少年编程·蓝桥杯·哈希算法·散列表
bbbb36513 分钟前
算法调优的多目标优化与性能平衡模型的技术8
算法
Fcy64814 分钟前
与二叉树有关算法题
算法·深度优先
️是7816 分钟前
信息奥赛一本通—编程启蒙(3346:【例60.3】 找素数)
数据结构·c++·算法
captain37617 分钟前
map和set
数据结构·算法
qq_4160187220 分钟前
实时数据可视化库
开发语言·c++·算法