# Check if any interval completely overlaps the other

An interval is represented as a combination of start time and end time. Given a set of intervals, we need to write a program to check if any interval completely overlaps the other.

Examples:

```Input:  arr[] = {{1, 3}, {1, 7}, {4, 8}, {2, 5}}
Output: true
The intervals {1, 3} completely overlaps in {1, 7}.

Input:  arr[] = {{1, 3}, {7, 9}, {4, 6}, {10, 13}}
Output: false
No pair of intervals overlap.
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

A Simple Solution is to consider every pair of intervals and check if the pair overlaps or not. The time complexity of this solution is O(n2).

A better solution is to use Sorting. Following is the complete algorithm.
1) Sort all intervals in increasing order of start time. This step takes O(n Logn) time.
2) In the sorted array, if the end time of an interval is not more than the end of the previous interval, then there is a complete overlap. This step takes O(n) time.

Given below is an implementation of the above approach:

 `// A C++ program to check if any two intervals ` `// completely overlap ` `#include ` `using` `namespace` `std; ` ` `  `// An interval has start time and end time ` `struct` `Interval { ` `    ``int` `start; ` `    ``int` `end; ` `}; ` ` `  `// Compares two intervals according to their staring  ` `// time. This is needed for sorting the intervals  ` `// using library function std::sort(). ` `bool` `compareInterval(Interval i1, Interval i2) ` `{ ` `    ``return` `(i1.start < i2.start) ? ``true` `: ``false``; ` `} ` ` `  `// Function to check if any two intervals  ` `// completely overlap ` `bool` `isOverlap(Interval arr[], ``int` `n) ` `{ ` `    ``// Sort intervals in increasing order of ` `    ``// start time ` `    ``sort(arr, arr + n - 1, compareInterval); ` ` `  `    ``// In the sorted array, if end time of an  ` `    ``// interval is not more than that of ` `    ``// end of previous interval, then there ` `    ``// is an overlap ` `    ``for` `(``int` `i = 1; i < n; i++) ` `        ``if` `(arr[i].end <= arr[i - 1].end) ` `            ``return` `true``; ` ` `  `    ``// If we reach here, then no overlap ` `    ``return` `false``; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``// 1st example ` `    ``Interval arr1[] = { { 1, 3 }, { 1, 7 }, { 4, 8 },  ` `                                          ``{ 2, 5 } }; ` `    ``int` `n1 = ``sizeof``(arr1) / ``sizeof``(arr1); ` `    ``if` `(isOverlap(arr1, n1)) ` `        ``cout << ``"Yes\n"``; ` `    ``else` `        ``cout << ``"No\n"``; ` ` `  `    ``// 2nd example ` `    ``Interval arr2[] = { { 1, 3 }, { 7, 9 }, { 4, 6 },  ` `                                         ``{ 10, 13 } }; ` `    ``int` `n2 = ``sizeof``(arr2) / ``sizeof``(arr2); ` `    ``if` `(isOverlap(arr2, n2)) ` `        ``cout << ``"Yes\n"``; ` `    ``else` `        ``cout << ``"No\n"``; ` ` `  `    ``return` `0; ` `} `

Output:

```Yes
No
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up Striver(underscore)79 at Codechef and codeforces D

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.