# 228. Summary Ranges (medium)
###### tags: `online_judge`, `python3`
難度只能算在 easy 級別,但題目內藏陷阱。放 medium... 也算合理吧。
把數列中連續的數字分到同一組去。
直接遍歷一次,記錄各段連續的數字的起點及終點即可。
注意題目並沒有給出數列範圍,數列可能為空。能避過這點一發入魂的,才能算是及格通過吧。
---
### 題目
```
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.
```
---
### 解答
```python=
class Solution:
def summaryRanges(self, nums) :
if not nums:
return nums
ans = []
count = 1
start = nums[0]
end = nums[0]
for i in range(1,len(nums)):
if end == nums[i] - 1:
count += 1
end = nums[i]
else:
if count == 1:
ans.append(str(start))
else:
ans.append(str(start) + "->" + str(end))
count = 1
start = nums[i]
end = nums[i]
if count == 1:
ans.append(str(start))
else:
ans.append(str(start) + "->" + str(end))
return ans
a = Solution()
print (a.summaryRanges([0,1,2,4,5,7]))
print (a.summaryRanges([0,2,3,4,6,8,9]))
print (a.summaryRanges([]))
```
---
### 成績

---