【代码随想录Day31】贪心算法Part05

56. 合并区间

题目链接/文章讲解:代码随想录

视频讲解:贪心算法,合并区间有细节!LeetCode:56.合并区间_哔哩哔哩_bilibili

java 复制代码
class Solution {
    public int[][] merge(int[][] intervals) {
        // 如果区间数组为空,直接返回空数组
        if (intervals.length == 0) {
            return new int[0][0];
        }

        // 按照区间的起始值进行排序
        Arrays.sort(intervals, new Comparator<int[]>() {
            public int compare(int[] o1, int[] o2) {
                return Integer.compare(o1[0], o2[0]);
            }
        });

        // 使用一个列表来存储合并后的区间
        List<int[]> list = new ArrayList<>();
        // 将第一个区间添加到结果中
        int[] currentInterval = intervals[0];

        for (int i = 1; i < intervals.length; i++) {
            // 如果当前区间与上一个区间重叠
            if (intervals[i][0] <= currentInterval[1]) {
                // 合并区间,更新结束值
                currentInterval[1] = Math.max(currentInterval[1], intervals[i][1]);
            } else {
                // 如果不重叠,将当前区间添加到列表中
                list.add(currentInterval);
                currentInterval = intervals[i]; // 更新当前区间
            }
        }
        // 添加最后一个区间
        list.add(currentInterval);

        // 将列表转换为数组并返回
        return list.toArray(new int[list.size()][]);
    }
}

738.单调递增的数字

题目链接/文章讲解:代码随想录

视频讲解:贪心算法,思路不难想,但代码不好写!LeetCode:738.单调自增的数字_哔哩哔哩_bilibili

java 复制代码
class Solution {
    public int monotoneIncreasingDigits(int n) {
        // 将数字转为字符串,然后转为字符数组
        String s = String.valueOf(n);
        char[] charArray = s.toCharArray();
        int length = charArray.length;

        // 从倒数第二位开始检查每一位
        for (int i = length - 2; i >= 0; i--) {
            // 如果当前位大于下一位,说明不满足单调递增
            if (charArray[i] > charArray[i + 1]) {
                // 当前位减一
                charArray[i]--;
                // 从当前位的下一位开始,将后面的所有位都设置为9
                for (int j = i + 1; j < length; j++) {
                    charArray[j] = '9';
                }
            }
        }

        // 处理可能出现的前导0情况
        // 将字符数组转换为字符串后再转换为整数
        return Integer.parseInt(new String(charArray));
    }
}

总结

总结:代码随想录

相关推荐
qwerasda1238522 分钟前
青豆质量分类识别_YOLOv5_SPDConv_改进算法_目标检测_深度学习_计算机视觉
算法·计算机视觉·分类
晓13138 分钟前
第二章:Redis常见命令与Java客户端
java·数据库·redis
老鼠只爱大米8 分钟前
LeetCode经典算法面试题 #141:环形链表(快慢指针、标记节点等多种方法详细解析)
算法·leetcode·链表·快慢指针·floyd算法·环形链表
invicinble9 分钟前
对于springboot
java·spring boot·后端
alanesnape15 分钟前
什么是字面量?代码中的常量表示方式解析
算法
偷星星的贼1118 分钟前
C++中的访问者模式实战
开发语言·c++·算法
莫问前路漫漫19 分钟前
JRE 核心实操指南:安装、配置、调优与问题排查
java·eclipse·tomcat·jre
填满你的记忆28 分钟前
【从零开始——Redis 进化日志|Day7】双写一致性难题:数据库与缓存如何不再“打架”?(附 Canal/读写锁实战)
java·数据库·redis·缓存·面试
灵感菇_29 分钟前
Android OkHttp框架全解析
android·java·okhttp·网络编程
Coder_Boy_33 分钟前
基于SpringAI的在线考试系统-知识点管理模块完整优化方案
java·前端·人工智能·spring boot