本文主要是介绍Interval 类型总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Interval是一类型的题目,面试的很喜欢出,这里把所有interval的题目全部总结一下;
Merge Intervals 首先按照start sort之后,判断end是否跟start相交,如果相交,end就是两者最大值;否则加入cur;注意最后需要加入cur;
class Solution { public int[][] merge(int[][] intervals) {if(intervals == null || intervals.length == 0) {return new int[0][0];}// sort based on start;Arrays.sort(intervals, (a, b) -> (a[0] - b[0]));List<int[]> list = new ArrayList<int[]>();int[] last = new int[]{intervals[0][0], intervals[0][1]};for(int i = 1; i < intervals.length; i++) {int[] cur = new int[]{intervals[i][0], intervals[i][1]};if(last[1] < cur[0]) {list.add(last);last = cur;} else {last[1] = Math.max(last[1], cur[1]);}} list.add(last); // 注意最后需要加入last;int[][] result = new int[list.size()][2];int index = 0;for(int[] interval: list) {result[index][0] = interval[0];result[index][1] = interval[1];index++;}return result;}
}
Insert Interval 思路:分三种情况,一种是interval 在newInterval前面, 一种是newInterval在interval前面,一种是相交;
class Solution {public int[][] insert(int[][] intervals, int[] newInterval) {if(intervals == null || intervals.length == 0) {
这篇关于Interval 类型总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!