Advertisement
seulunga

Untitled

Feb 17th, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.01 KB | None | 0 0
  1. class Solution {
  2. public:
  3.   vector<string> findMissingRanges(const vector<int>& nums, int lower,
  4.                                    int upper) {
  5.     vector<string> res;
  6.     if (nums.empty()) {
  7.       res.push_back(append_range(lower, upper));
  8.       return res;
  9.     }
  10.     int64_t first = nums[0];
  11.     if (first != lower) {
  12.       res.push_back(append_range(lower, first - 1));
  13.     }
  14.     int64_t prev = first;
  15.     for (int i = 1; i < nums.size(); i++) {
  16.       int64_t cur = nums[i];
  17.       if (cur - prev > 1) {
  18.         res.push_back(append_range(prev + 1, cur - 1));
  19.       }
  20.       prev = nums[i];
  21.     }
  22.  
  23.     int64_t last = nums[nums.size() - 1];
  24.     if (last != upper) {
  25.       res.push_back(append_range(last + 1, upper));
  26.     }
  27.     return res;
  28.   }
  29.  
  30. private:
  31.   string append_range(int64_t b, int64_t e) {
  32.     if (b == e) {
  33.       return to_string(b);
  34.     } else {
  35.       string res;
  36.       res.append(to_string(b));
  37.       res.append("->");
  38.       res.append(to_string(e));
  39.       return res;
  40.     }
  41.   }
  42. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement