leetcode100-合并区间

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

这题不会,用的是贪心


一、我的思路和答题思路

这题是取连续,我想的是将构建一个最大数组,将连续值续1,做了一半没做出来。因为担心以后拿不到步骤分,没有训练到贪心的思维,所以最后没有采用这种方法。

题解的思路:先假定排序,然后假定第一组和后面不连续,每次添加新值只用验证和前面连不连续,能减少很多时间复杂度,最后是O(nlogn)

二、代码

java 复制代码
class Solution {
    public int[][] merge(int[][] intervals) {
        //互相包围--合并两个
        //完全包围--取一个
        List<int[]> list1=new ArrayList<int[]>();
        if(intervals.length==0){
            return new int[0][2];
        }
        Arrays.sort(intervals,new Comparator<int[]>(){
            public int compare(int[] intervals1,int[] intervals2){
                return intervals1[0]-intervals2[0];
            }
        });
        for(int i=0;i<intervals.length;++i){
            int L=intervals[i][0],R=intervals[i][1];
            if(list1.size()==0 || list1.get(list1.size()-1)[1]<L){
                list1.add(new int[]{L,R});
            }else{
                list1.get(list1.size()-1)[1]=Math.max(list1.get(list1.size()-1)[1],R);
            }
        }
        return list1.toArray(new int[list1.size()][]);
    }
}

总结

抄的就不说了,只能说我不会贪心。

相关推荐
hanhahai12 分钟前
指针与函数(函数指针与指针函数)
算法
码匠许师傅35 分钟前
【C++ 面试真题】聊聊 C++ 的序列容器
java·c++·面试
ValhallaCoder37 分钟前
Leetcode-hot100(2026.08.17)
python·算法·leetcode
IT爱学堂41 分钟前
尚硅谷Java+AI大模型应用开发革新版本 2025年3月
java·开发语言·人工智能
泡沫冰@1 小时前
GO 语言基础
开发语言·算法·golang
不爱编程的小九九1 小时前
小九源码-springboot004-springboot智能阅读推荐系统
java·spring boot·后端
SCandL1522 小时前
Docker的实战应用
java·docker·容器
luj_17682 小时前
元设计的诱惑与现实
c语言·开发语言·c++·经验分享·算法
小星星闪亮登场2 小时前
ST表--倍增思想
开发语言·数据结构·c++·算法·思维
AC赳赳老秦2 小时前
OpenClaw 多源采集公开行业数据:从原始信息到研究报告初稿的自动化实践
java·c语言·c++·python·php·deepseek·openclaw