Friday, February 6, 2015

163 Missing Ranges

Given a sorted integer array where the range of elements are [lowerupper] 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