---
# System prepended metadata

title: 1272. Remove Interval
tags: [Leetcode, Intervals, Medium, Greedy]

---

# 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;
    }
}
```