# 1272. Remove Interval ###### tags: `Leetcode` `Medium` `Greedy` `Intervals` Link: https://leetcode.com/problems/remove-interval/description/ ## 思路 考查了对于两个区间相对关系的代码描述。假设有我们考察的区间是a,toBeRemoved的区间是b: 1. 如果a和b不相交:```if(a[1]<=b[0] || a[0]>=b[1])```,那么就将a加入结果。 2. 剩下的情况就是a和b相交。我们需要加入结果的是a在b前面的部分,和a在b后面的部分。前者需要```if (a[0]<b[0])```,然后加入```{a[0], min(a[1],b[0])}```;后者需要```if (a[1]>b[1])```,然后加入```{max(a[1],b[1]), a[1]}```; ## Code ```java= class Solution { public List<List<Integer>> removeInterval(int[][] intervals, int[] toBeRemoved) { int n = intervals.length; List<List<Integer>> ans = new ArrayList<>(); for(int i=0; i<n; i++){ int a = intervals[i][0]; int b = intervals[i][1]; if(a>=toBeRemoved[1] || b<=toBeRemoved[0]){ List<Integer> temp = new ArrayList<>(); temp.add(a); temp.add(b); ans.add(temp); } else{ int left = Math.min(b, toBeRemoved[0]); int right = Math.max(a, toBeRemoved[1]); if(a<left){ List<Integer> temp = new ArrayList<>(); temp.add(a); temp.add(left); ans.add(temp); } if(right<b){ List<Integer> temp = new ArrayList<>(); temp.add(right); temp.add(b); ans.add(temp); } } } return ans; } } ```