day27 贪心算法 part05

问题1:合并区间

题目:

56. 合并区间 - 力扣(LeetCode)

思路:

借用数组

代码:

java 复制代码
import org.omg.CORBA.MARSHAL;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;

public class 合并区间 {
    public static void main(String[] args) {
        int[][] strArr3 = merge(new int[][]{{1, 3}, {2, 6}, {8, 10}, {15, 18}});
        // 1. 将二维数组转为Stream,处理每个子数组
        String result = Arrays.stream(strArr3)
                // 2. 将子数组转为"[1, 3]"格式的字符串
                .map(Arrays::toString)
                // 3. 替换[]为{},得到"{1, 3}"
                .map(s -> s.replace("[", "{").replace("]", "}"))
                // 4. 用", "连接所有子数组字符串
                .collect(Collectors.joining(", "));

        // 5. 输出结果
        System.out.println(result);
    }

    public static int[][] merge(int[][] intervals) {
        /*
        1. 可以先排序 按intervals[0]排序
         */
        if (intervals.length <= 1) return intervals;
        List<int[]> res = new LinkedList<>();
        Arrays.sort(intervals,(a,b)->a[0] - b[0]);
        res.add(intervals[0]);
        for (int i = 1; i < intervals.length;i++){
            if (intervals[i][0]<= res.get(res.size()-1)[1]){
                res.get(res.size()-1)[1] = Math.max(res.get(res.size()-1)[1],intervals[i][1]);
            }
            else {
                res.add(intervals[i]);
            }
        }
        int [][] l = new int[res.size()][2];
    return res.toArray(l);
    }

}
问题2:单调递增的数字

题目:

738. 单调递增的数字 - 力扣(LeetCode)

思路:

从右边开始 采用进位制度 后将需要置值为9的 标记好

代码:

java 复制代码
public class 单调递增的数字 {
    public static void main(String[] args) {
        System.out.println(monotoneIncreasingDigits(776));
    }
    public static int monotoneIncreasingDigits(int n) {
        String s = String.valueOf(n);
        char[] chars = s.toCharArray();
        int start = s.length();
        /*
        从右 向左对比
         */
        for (int i = s.length() - 2; i >= 0; i--) {
            if (chars[i] > chars[i + 1]) {
                // 实际上是进位制度
                chars[i]--;
                // 标记从这里开始都是9
                start = i+1;
            }
        }
        for (int i = start; i < s.length(); i++) {
            chars[i] = '9';
        }
        return Integer.parseInt(String.valueOf(chars));
    }
}
问题3:监控二叉树(二刷再看)

题目:

思路:

代码:

相关推荐
地平线开发者5 小时前
【模型轻量化专题】衡量模型轻量性的指标
算法
学习星球8 小时前
OFDM技术精讲:正交性推导、循环前缀原理与80行Python链路仿真(附实测数据)
算法·面试·前端框架
alphaTao14 小时前
LeetCode 每日一题 2026/8/24-2026/8/30
python·算法·leetcode
Interview Aid11214 小时前
TikTok OA 四题分享|半小时内 AC,题目基本都是实现题
java·开发语言·算法·面试·职场和发展
顶点多余1 天前
那些在算法中适合巩固的知识点---1
java·前端·算法
罗西的思考1 天前
【Agentic RL / 强化学习框架】Molt 设计解读
人工智能·算法·机器学习
hahaha60161 天前
HLS高层次综合设计技巧--C++类和模板
图像处理·人工智能·算法·计算机视觉
多弗朗皮卡丘1 天前
算法详解4:买卖股票的最佳时机系列(上)
算法
楠楠子呀1 天前
客户数据清洗与质量管理的通用流程
贪心算法·散列表·memcached·模拟退火算法·testlink
维克兜率天1 天前
【维克】动量指标家族:RSI、ROC、CCI、Momentum全面解析
python·算法