当前位置: 首页 > article >正文

2025-3-13 leetcode刷题情况(贪心算法--区间问题)

一、763.划分字母区间

1.题目描述

2.代码

3.思路

  • 统计每一个字符最后出现的位置
  • 从头遍历字符,并更新字符的最远出现下标,如果找到字符最远出现位置下标和当前下标相等了,则找到了分割点

二、56.合并区间

1.题目描述

2.代码

3.思路

先排序,让所有的相邻区间尽可能的重叠在一起。

  1. 使用 Arrays.sort 方法对 intervals 数组按照区间的起始位置进行排序。通过 (x, y) -> Integer.compare(x[0], y[0]) 作为比较器,确保区间按起始位置从小到大排列。
  2. 初始化合并区间的起始位置和右边界:将第一个区间的起始位置 intervals[0][0] 赋值给 start,作为当前合并区间的起始位置;将第一个区间的结束位置 intervals[0][1] 赋值给 rightmostRightBound,作为当前合并区间的右边界。
  3. 遍历区间数组:从第二个区间开始遍历,对于每个区间 intervals[i]
    • 若当前区间的起始位置 intervals[i][0] 大于当前合并区间的右边界 rightmostRightBound,说明当前区间与之前的合并区间不重叠。此时,将之前的合并区间 [start, rightmostRightBound] 添加到结果列表 res 中,并更新 start 为当前区间的起始位置 intervals[i][0]rightmostRightBound 为当前区间的结束位置 intervals[i][1]
    • 若当前区间的起始位置 intervals[i][0] 小于或等于当前合并区间的右边界 rightmostRightBound,说明当前区间与之前的合并区间重叠。此时,更新 rightmostRightBound 为当前合并区间右边界和当前区间结束位置的较大值,即 rightmostRightBound = Math.max(rightmostRightBound, intervals[i][1])
  4. 添加最后一个合并区间:遍历结束后,将最后一个合并区间 [start, rightmostRightBound] 添加到结果列表 res 中。
  5. 返回结果:将结果列表 res 转换为二维数组并返回,该数组即为合并后的区间数组。

http://www.kler.cn/a/584461.html

相关文章:

  • Prompt优化 COT/COD
  • 时间有限,如何精确设计测试用例?5种关键方法
  • pop_dialog_state(state: State)弹出对话栈并返回到主助手,让整个对话流程图可以明确追踪对话流,并将控制权委派给特定的子对话图。
  • 使用conda将python环境打包,移植到另一个linux服务器项目中
  • Matplotlib高阶技术全景解析
  • 【数据挖掘】知识蒸馏(Knowledge Distillation, KD)
  • kali linux 漏洞扫描
  • (每日一题) 力扣 179 最大数
  • 前端面试:如何实现预览 PDF 文件?
  • 基于深度学习的肺炎X光影像自动诊断系统实现,真实操作案例分享,值得学习!
  • 【文献阅读】SPRec:用自我博弈打破大语言模型推荐的“同质化”困境
  • 电子电气架构 --- 智能电动汽车概述
  • 塔能IVO-SCY智能机箱:点亮智慧城市的电力“智慧核芯”
  • python语言写的一款pdf转word、word转pdf的免费工具
  • 微店关键词搜索接口(micro.item_search)返回数据测试指南
  • Spring 注解解析
  • java: system类
  • 高效集成聚水潭采购退货数据到MySQL的最佳实践
  • PHP批量去除Bom头的方法
  • JVM崩溃时产生的文件 hs_err.pid.log