第八章 贪心算法 part05

贪心一直做的很难受,前两天在忙面试,进度有点拉下了

435. 无重叠区间

python 复制代码
class Solution:
    def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:
        intervals.sort(key = lambda x: (x[0],x[1]-x[0]))
        result = 1
        for i in range(1, len(intervals)):
            if intervals[i][0] >= intervals[i - 1][1]:
                result += 1     
            else:
                intervals[i][1] = min(intervals[i - 1][1], intervals[i][1]) # 更新重叠气球最小右边界
        return len(intervals)-result

763. 划分字母区间

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

56. 合并区间

这道题一开始的思路就是,一个for循环,觉得只需要做一次

python 复制代码
interval = intervals[i]
last_interval = intervals[i-1]
if interval[0] <= last_interval[1]:
    last_interval[1] = max(interval[1],last_interval[1])

最后再把修改过的interval删除掉就可以了,但是没考虑到

\[1,4\],\[0,2\],\[3,5\]

\[0,4\],\[3,5\]

只遍历一遍的话,还是会有重复的。

看了题解发现是不能只跟intervals里的元素比较,应该跟结果集里的元素去进行比较。

python 复制代码
class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        intervals.sort(key = lambda x : x[0])
        a = [intervals[0]]
        for i in range(1,len(intervals)):
            if a[-1][1] >= intervals[i][0]:
                a[-1][1] = max(a[-1][1],intervals[i][1])
            else:
                a.append(intervals[i])
        return a
相关推荐
-dzk-11 分钟前
【贪心算法】LC 55.跳跃游戏
算法·游戏·贪心算法
ofoxcoding13 分钟前
Jev 模型评测深度解析:核心得分、能力局限与最佳适用任务场景
人工智能·算法·机器学习·ai
Evand J30 分钟前
【MATLAB例程】三维A*路径规划与TOA-AOA-TDOA融合定位算法。附下载链接
数据库·算法·matlab
Doubbbbbbble云39 分钟前
图算法中的剪枝技术与启发式优化分析4
算法·机器学习·剪枝
鶴哥只手遮天41 分钟前
CFL3D深度解析:NASA经典CFD求解器的架构、算法与工程实践
算法
维克兜率天43 分钟前
【维克】价差交易实战:配对交易的核心参数设置
大数据·笔记·算法·量化
dtq042443 分钟前
数据结构 - 树的概念
c语言·数据结构·学习·算法
晒太羊的猫44 分钟前
hot100多维动态规划刷题
算法·动态规划
Dream it possible!1 小时前
LeetCode_热题100_知识点总结
算法·leetcode·职场和发展
鶴哥只手遮天1 小时前
从像素到战场:红外场景仿真引擎的核心技术深度解析
算法