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

总结

总结:代码随想录

相关推荐
Logic1015 小时前
C语言/数据结构二维数组题解:找出行列O个数均为偶数的格子——奇偶性预处理+二次遍历
c语言·数据结构·算法·二维数组·时间复杂度·动态内存分配·奇偶性
程序猿阿森5 小时前
【机器学习实战】朴素贝叶斯算法详解:从概率基础到商品评论情感分析
算法·机器学习·概率论
余额瞒着我当琳5 小时前
哈希表底层原理解析,直接定址法,哈希冲突,负载因子,哈希函数,开放定址法
java·c++·哈希算法·散列表
xxwl5855 小时前
区域赛算法模版第五章---数学与数论
c++·笔记·算法
看浪的路人6 小时前
第6讲:Agent 安全体系——Prompt 注入防御、工具调用审计与输出合规
人工智能·算法
paopaokaka_luck6 小时前
民宿管理系统 (AI民宿总结、协同过滤推荐算法、WebSocket 在线咨询、ECharts 经营分析、房态与结算联动、 民宿预订业务闭环)
java·人工智能·spring boot·websocket·数据分析·echarts·推荐算法
java资料站6 小时前
十四、Spring AI Alibaba · 案例 · 基于 HumanInTheLoop 的内容审核系统
java·spring·状态模式
局部有解6 小时前
LeetCode Hot100 438 找到字符串中所有字母异位词
c++·算法·leetcode
垆边人似月.6 小时前
移动长度 k 子串使字符串变成回文
数据结构·算法
David猪大卫6 小时前
【C++修炼】string类:string类的模拟实现
c语言·开发语言·数据结构·c++·经验分享·笔记·学习