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(int A[], int n, int lower, int upper) {
vector<string> res;
for (int i=0;i<n;i++)
{
if (A[i]>upper)
break;
else if (A[i]==upper)
upper--;
else if (A[i]<lower)
continue;
else if (A[i]==lower)
lower++;
else
{
if (A[i]-lower==1)
{
res.push_back(to_string(lower));
lower = A[i]+1;
}
else
{
string range = to_string(lower)+"->"+to_string(A[i]-1);
res.push_back(range);
lower = A[i]+1;
}
}
}
if (lower<upper)
res.push_back(to_string(lower)+"->"+to_string(upper));
else if (lower == upper)
res.push_back(to_string(lower));
return res;
}
};
No comments:
Post a Comment