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

代码随想录算法训练营Day31 | 56. 合并区间 738.单调递增的数字

56. 合并区间

问题描述:

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。

解决方式:

class Solution {public int[][] merge(int[][] intervals) {Arrays.sort(intervals,(a,b)->Integer.compare(a[0],b[0]));List<int[]> marge = new ArrayList<>();//当前区间int[] currentInterval = intervals[0];marge.add(currentInterval);//始终比较结果集合中最后一个区间与当前遍历到的区间for(int[] interval : intervals){int currentEnd = currentInterval[1];int nextStart = interval[0];int nextEnd = interval[1];if(currentEnd >= nextStart){currentInterval[1] = Math.max(currentEnd,nextEnd);}else{currentInterval = interval;marge.add(currentInterval);}}return marge.toArray(new int[0][]);}
}

738.单调递增的数字

问题描述:

当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。

给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增 。

解决方式:

class Solution {public int monotoneIncreasingDigits(int n) {char[] digits = String.valueOf(n).toCharArray();int mark = digits.length; // 标记需要置为'9'的起始位置// 从右向左扫描for (int i = digits.length - 1; i > 0; i--) {if (digits[i] < digits[i - 1]) {digits[i - 1]--;mark = i; // 只更新最左边的mark}}// 将mark之后的所有位都置为'9'for (int i = mark; i < digits.length; i++) {digits[i] = '9';}return Integer.parseInt(new String(digits));}
}

相关文章:

  • 代码随想录算法训练营第二十七天(补)
  • ABAP Object Services
  • 通过gap看margin和padding在布局中的应用
  • 多个请求并行改造
  • 人工智能:入门阶段学习路径
  • 使用Xshell中自带的传输新建文件功能实现上传下载文件
  • PCL点云处理之基于FPFH特征的SAC-IA全局配准算法 (二百四十六)
  • gin框架学习笔记
  • C++篇——继承
  • 04_jQuery
  • 4-26记录(学习通排序测试)
  • TDengine 中的压缩设计
  • springboot入门-repository数据访问层JPA和mybatis
  • NtripShare 2025第一季度主要技术进展
  • Python循环结构深度解析与高效应用实践
  • 2.4goweb项目上传到csdn的git仓库
  • SinSR模型剪枝实验报告
  • 蓝桥杯赛场反思:技术与心态的双重修炼
  • 基于大模型对先天性幽门肥厚性狭窄预测及临床方案的研究报告
  • 【Linux】环境监控系统软件框架
  • 向总书记汇报具身智能发展的“稚辉君”:从期待到兴奋再到备受鼓舞
  • 这座“蚌埠住了”的城市不仅会接流量,也在努力成为文旅实力派
  • 王毅:为改革完善全球治理作出金砖贡献
  • 呼伦贝尔市委常委、组织部长闫轶圣调任内蒙古交通集团党委副书记
  • 论法的精神︱张玉敏:知识产权保护要为社会经济文化发展服务
  • 新质观察|重塑低空经济的系统安全观