LeetCode 986. Interval List Intersections

原题链接在这里:https://leetcode.com/problems/interval-list-intersections/

题目:

Given two lists of closed intervals, each list of intervals is pairwise disjoint and in sorted order.

Return the intersection of these two interval lists.

(Formally, a closed interval [a, b] (with a <= b) denotes the set of real numbers x with a <= x <= b.  The intersection of two closed intervals is a set of real numbers that is either empty, or can be represented as a closed interval.  For example, the intersection of [1, 3] and [2, 4] is [2, 3].)

Example 1:

Input: A = [[0,2],[5,10],[13,23],[24,25]], B = [[1,5],[8,12],[15,24],[25,26]]
Output: [[1,2],[5,5],[8,10],[15,23],[24,24],[25,25]]
Reminder: The inputs and the desired output are lists of Interval objects, and not arrays or lists.

Note:

  1. 0 <= A.length < 1000
  2. 0 <= B.length < 1000
  3. 0 <= A[i].start, A[i].end, B[i].start, B[i].end < 10^9

NOTE: input types have been changed on April 15, 2019. Please reset to default code definition to get new method signature.

题解:

The example is long, try with a simpler example. Virtualize the result, could see the routine that if the maximum start of two intervals is smaller to or equal with minimum end, then there is an intersection.

Then move the pointer pointering to smaller end.

Time Complexity: O(A.length + B.length).

Space: O(1).

AC Java:

 1 class Solution {
 2     public int[][] intervalIntersection(int[][] A, int[][] B) {
 3         if(A == null || B == null){
 4             return null;
 5         }
 6
 7         List<int []> resList = new ArrayList<>();
 8         int i = 0;
 9         int j = 0;
10         while(i<A.length && j<B.length){
11             int maxStart = Math.max(A[i][0], B[j][0]);
12             int minEnd = Math.min(A[i][1], B[j][1]);
13             if(maxStart <= minEnd){
14                 resList.add(new int[]{maxStart, minEnd});
15             }
16
17             if(A[i][1]<B[j][1]){
18                 i++;
19             }else{
20                 j++;
21             }
22         }
23
24         int [][] res = new int[resList.size()][2];
25         for(int ind = 0; ind<resList.size(); ind++){
26             res[ind] = resList.get(ind);
27         }
28
29         return res;
30     }
31 }

类似Merge Intervals.

原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/11403342.html

时间: 2024-10-31 17:18:12

LeetCode 986. Interval List Intersections的相关文章

【leetcode】986. Interval List Intersections

题目如下: Given two lists of closed intervals, each list of intervals is pairwise disjoint and in sorted order. Return the intersection of these two interval lists. (Formally, a closed interval [a, b] (with a <= b) denotes the set of real numbers x with 

LC 986. Interval List Intersections

Given two lists of closed intervals, each list of intervals is pairwise disjoint and in sorted order. Return the intersection of these two interval lists. (Formally, a closed interval [a, b] (with a <= b) denotes the set of real numbers x with a <=

[leetcode]Insert Interval @ Python

原题地址:https://oj.leetcode.com/problems/insert-interval/ 题意: Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary). You may assume that the intervals were initially sorted according to their start times

LeetCode: Insert Interval [056]

[题目] Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary). You may assume that the intervals were initially sorted according to their start times. Example 1: Given intervals [1,3],[6,9], insert and m

LeetCode Insert Interval

原题链接在这里:https://leetcode.com/problems/insert-interval/ AC Java: 1 /** 2 * Definition for an interval. 3 * public class Interval { 4 * int start; 5 * int end; 6 * Interval() { start = 0; end = 0; } 7 * Interval(int s, int e) { start = s; end = e; } 8

2015.04.01 Leetcode Insert interval

Insert Interval解法: 先用start,end两个变量来定位 newinterval可能要插入的起始点和结束点. 分三种情况来看是否需要调整或合并(merge). case1: 在start 之前直接copy 到结果res: case2: 在end之后也是直接copy到res中; case3: 需要合并的就是newInterval.start, newInterval.end, 和任选的一个interval 的interval.start , interval.end 四个边界的比

[LeetCode] Insert Interval 二分搜索

Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary). You may assume that the intervals were initially sorted according to their start times. Example 1:Given intervals [1,3],[6,9], insert and merge [

[LeetCode]Insert Interval 考虑多种情况

写太复杂了. 思想:确定带插入区间的每个边界位于给定区间中的哪个位置,共有5种情况 -1 |(0)_1_(2)|  (3) 其中,0,1,2这三种情况是一样的. 确定每个带插入区间的两个边界分别属于哪种情况,记为flag0和flag1. 然后根据flag0和flag1的组合情况,分9种情况进行讨论 class Solution { public: vector<Interval> insert(vector<Interval> &its, Interval ni) { in

[Swift Weekly Contest 122]LeetCode986. 区间列表的交集 | Interval List Intersections

Given two lists of closed intervals, each list of intervals is pairwise disjoint and in sorted order. Return the intersection of these two interval lists. (Formally, a closed interval [a, b] (with a <= b) denotes the set of real numbers x with a <=