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

相关推荐
万岳科技系统开发8 分钟前
从源码优化外卖配送系统:算法调度、智能推荐与数据分析应用
算法·数据挖掘·数据分析
信奥卷王3 小时前
[GESP202503 五级] 原根判断
java·数据结构·算法
兮山与3 小时前
算法4.0
算法
nju_spy3 小时前
力扣每日一题(二)任务安排问题 + 区间变换问题 + 排列组合数学推式子
算法·leetcode·二分查找·贪心·排列组合·容斥原理·最大堆
初听于你3 小时前
高频面试题解析:算法到数据库全攻略
数据库·算法
翟天保Steven3 小时前
ITK-基于Mattes互信息的二维多模态配准算法
算法
代码对我眨眼睛3 小时前
226. 翻转二叉树 LeetCode 热题 HOT 100
算法·leetcode·职场和发展
黑色的山岗在沉睡4 小时前
LeetCode 494. 目标和
算法·leetcode·职场和发展
haoly19897 小时前
数据结构和算法篇-线性查找优化-移至开头策略
数据结构·算法·移至开头策略
学Linux的语莫10 小时前
机器学习数据处理
java·算法·机器学习