summary-ranges-228

problem

Given a sorted integer array without duplicates, return the summary of its ranges.

For example, given [0,1,2,4,5,7], return ["0->2","4->5","7"].

题解

每一个区间的起点nums[i]加上j是否等于nums[i+j]
参考

Code

class Solution {
public:
    vector<string> summaryRanges(vector<int>& nums) {
        int i = 0, j = 1, n;
        vector<string> res;
        n = nums.size();
        while(i < n){
            j = 1;
            while(j < n && nums[i+j] - nums[i] == j) j++;
            res.push_back(j <= 1 ? to_string(nums[i]) : to_string(nums[i]) + "->" + to_string(nums[i + j - 1]));
            i += j;
        }
        return res;
    }
};