-
Notifications
You must be signed in to change notification settings - Fork 0
/
163missingRanges.cpp
44 lines (43 loc) · 1.19 KB
/
163missingRanges.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//
//
//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"].
//
class Solution {
public:
vector<string> findMissingRanges(vector<int>& nums, int lower, int upper)
{
vector<string> result;
for (int i = 0; i < nums.size() && nums[i] <= upper; i++)
{
while (nums[i] == lower && i < nums.size())
{
i++;
lower++;
}
if (i == nums.size())
{
break;
}
if (nums[i] == lower + 1)
{
result.push_back(to_string(lower));
}
else
{
result.push_back(to_string(lower) + "->"+to_string(min(upper, nums[i]-1)));
}
lower = nums[i] + 1;
}
if (lower == upper)
{
result.push_back(to_string(lower));
}
else if (lower < upper)
{
result.push_back(to_string(lower) + "->" + to_string(upper));
}
return result;
}
};