网站建设 维护 编程,做网站学什么代码,比较好的app创意想法,wordpress 千万数据库目录
435 无重叠区间
763 划分字母区间
56 合并区间 435 无重叠区间 将intervals数组按照左端点进行升序排序。 设置变量len标志此时新加入端点后所有区间的位置#xff0c;将其赋初值为第一对区间的右端点#xff0c;因为该点是一定可达的。设置变量res来存储需要移除空间…目录
435 无重叠区间
763 划分字母区间
56 合并区间 435 无重叠区间 将intervals数组按照左端点进行升序排序。 设置变量len标志此时新加入端点后所有区间的位置将其赋初值为第一对区间的右端点因为该点是一定可达的。设置变量res来存储需要移除空间的数量。 遍历intervals数组有如下两种情况 如果当前区间右端点小于或者等于新区间的左端点说明可以将新区间加入到总区间中将len赋值为新区间的右端点。如果当前总区间右端点大于新区间的左端点说明加入发生了冲突将res。局部最优是在保证res较小的情况下使得总区间范围尽可能小如果发生以下情况即当前总区间右端点大于新区间的右端点为了使得较小区间总范围较小我们应该放弃上一个端点选择新端点所以应该进行判断使得len为总区间右端点和新区间右端点之间的最小值。 import java.util.Arrays;
class Solution {public int eraseOverlapIntervals(int[][] intervals) {Arrays.sort(intervals,(o1, o2) - {if(o1[0] o2[0]){return o1[1] - o2[1];}return o1[0] - o2[0];});int res 0;int len intervals[0][1];for(int i 1;i intervals.length;i){if(len intervals[i][0]){len intervals[i][1];}else{res;len Math.min(len,intervals[i][1]);}}return res;}
}
时间复杂度O(nlogn)排序的时间复杂度为nlogn,遍历的时间复杂度为n
空间复杂度O(logn)排序所需要的栈空间
763 划分字母区间 56 合并区间