nikunjsoni

1893

Jun 13th, 2021 (edited)
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.74 KB | None | 0 0
  1. O(n+m) solution
  2.  
  3. class Solution {
  4. public:
  5.     bool isCovered(vector<vector<int>>& ranges, int left, int right) {
  6.         int line[52] = {};
  7.         for(auto &r : ranges) {
  8.             line[r[0]] += 1;
  9.             line[r[1] + 1] -= 1;
  10.         }
  11.         for(int i = 1, overlaps = 0; i <= right; ++i) {
  12.             overlaps += line[i];
  13.             if (i >= left && overlaps == 0)
  14.                 return false;
  15.         }
  16.         return true;
  17.     }
  18. };
  19.  
  20.  
  21. -----------
  22. O(nlogn) solution, when range is very large.
  23.  
  24. public boolean isCovered(int[][] ranges, int left, int right) {
  25.     Arrays.sort(ranges, (x,y)->x[0]-y[0]);
  26.     for(int[] range: ranges)
  27.         if(left >= range[0] && left <= range[1])
  28.             left = range[1] + 1;
  29.     return left > right;
  30. }
  31.  
Add Comment
Please, Sign In to add comment