# 228. Summary Ranges
Given a sorted integer array without duplicates, return the summary of its ranges.
Example 1:
Input: [0,1,2,4,5,7]
Output: ["0->2","4->5","7"]
Explanation: 0,1,2 form a continuous range; 4,5 form a continuous range.
Example 2:
Input: [0,2,3,4,6,8,9]
Output: ["0","2->4","6","8->9"]
Explanation: 2,3,4 form a continuous range; 8,9 form a continuous range.
# Solution
Approach 1: Scan the array.
# Code (Python)
Approach 1:
class Solution:
def summaryRanges(self, nums: List[int]) -> List[str]:
ranges = []
for num in nums:
if not ranges or num > ranges[-1][1] + 1:
ranges.append([num, num])
else:
ranges[-1][1] = num
return [str(interval[0]) + '->' + str(interval[1]) if interval[0] != interval[1] else str(interval[0]) for interval in ranges]
# Code (C++)
Approach 1:
class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
vector<string> res;
int head = 0;
int tail = 0;
while (tail <= nums.size())
{
if (tail > 0 && (tail == nums.size() || nums[tail] - 1 > nums[tail-1]))
{
ostringstream oss;
oss << nums[head];
if (tail - 1 > head)
oss << "->" << nums[tail-1];
res.push_back(oss.str());
head = tail;
}
tail++;
}
return res;
}
};