提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
这题不会,用的是贪心
一、我的思路和答题思路
这题是取连续,我想的是将构建一个最大数组,将连续值续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()][]);
}
}
总结
抄的就不说了,只能说我不会贪心。