标签:
Problem Description:
Given a sorted integer array where the range of elements are [lower, upper] inclusive, return its missing ranges.
For example, given [0, 1, 3, 50, 75]
, lower = 0 and upper = 99, return ["2", "4->49", "51->74", "76->99"].
Well, I guess this problem aims at testing your ability to think throughly. The tricky part in this problem is to take all possible cases into consideration and return the result correctly.
Of course, you also need to unify the boundary cases to give a succinct code.
The code is as follows.
1 class Solution { 2 public: 3 vector<string> findMissingRanges(vector<int>& nums, int lower, int upper) { 4 vector<string> ranges; 5 int pre = lower - 1, n = nums.size(); 6 for (int i = 0; i <= n; i++) { 7 int cur = (i == n) ? upper + 1 : nums[i]; 8 if (cur - pre >= 2) 9 ranges.push_back(missingRanges(pre + 1, cur - 1)); 10 pre = cur; 11 } 12 return ranges; 13 } 14 private: 15 string missingRanges(int low, int up) { 16 return (low == up) ? to_string(low) : to_string(low) + "->" + to_string(up); 17 } 18 };
标签:
原文地址:http://www.cnblogs.com/jcliBlogger/p/4601221.html