【代码随想录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));
    }
}

总结

总结:代码随想录

相关推荐
paeamecium27 分钟前
【PAT甲级真题】- Student List for Course (25)
数据结构·c++·算法·list·pat考试
Book思议-34 分钟前
【数据结构】栈与队列全方位对比 + C 语言完整实现
c语言·数据结构·算法··队列
SteveSenna36 分钟前
项目:Trossen Arm MuJoCo
人工智能·学习·算法
NAGNIP1 小时前
一文搞懂CNN经典架构-DenseNet!
算法·面试
希望永不加班1 小时前
SpringBoot 过滤器(Filter)与请求链路梳理
java·spring boot·后端·spring
道法自然|~1 小时前
BugCTF黄道十二宫
算法·密码学
Lyyaoo.1 小时前
【JAVA基础面经】抽象类/方法与接口
java·开发语言
0xDevNull1 小时前
Java实现Redis延迟队列:从原理到高可用架构
java·开发语言·后端
于先生吖1 小时前
无人共享健身房 Java 后端源码 + 多端对接完整方案
java·开发语言
恼书:-(空寄1 小时前
Spring 事务失效的 8 大场景 + 原因 + 解决方案
java·后端·spring