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

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 转换为二维数组并返回,该数组即为合并后的区间数组。

相关文章:

  • Unity AI 技术浅析(三):智能代理(Agents)
  • 破解“光伏+储能+充电”一体化难题!安科瑞全方案打造智慧能源新标杆
  • RocketMQ面试题:进阶部分
  • Java开发第一坑:记一次MySQL ON DUPLICATE KEY UPDATE影响行数异常排查:从现象到解决的全过程
  • 【资料分享】标准规范汇总(2025.3.13更新)
  • 工程化与框架系列(32)--前端测试实践指南
  • 使用PHP进行自动化测试:工具与策略的全面分析
  • RagFlow+Deepseek构建个人知识库
  • 深入理解TCP/IP网络模型及Linux网络管理
  • modbusrtu.h:5:10: error: ‘QSerialPort‘ file not found
  • 技术视界|构建理想仿真平台,加速机器人智能化落地
  • 文件解析漏洞靶场通关合集
  • Java泛型(Generics(
  • Java定时任务1_定时任务实现方式以及原理
  • 基于JSP和SQL的CD销售管理系统(源码+lw+部署文档+讲解),源码可白嫖!
  • ubuntu ollama+dify实践
  • 基金交易系统的流程
  • 国产主流数据库存储类型简析
  • 接口自动化测试实战(超详细的)
  • 小程序主包方法迁移到分包-调用策略
  • 江都建设总部网站/武汉百度
  • 新网站如何做百度关键词/济南谷歌推广
  • 青苹果乐园免费观看电视剧高清/武汉seo推广
  • 网站建设有哪些平台/友情链接交换标准
  • 在工商局网站如果做注销公告/首页图片点击率如何提高
  • 个人网站怎么做视频/站长网站