---
# System prepended metadata

title: 228. Summary Ranges
tags: [Leetcode, Python]

---

# 228. Summary Ranges
###### tags: `Python`,`Leetcode`
https://leetcode.com/problems/summary-ranges/description/
## MyCode
``` python =
class Solution:
    def summaryRanges(self, nums: List[int]) -> List[str]:
        ans = []
        idx = 0
        while idx < len(nums):
            start = nums[idx]
            while idx + 1 < len(nums) and nums[idx] + 1 == nums[idx+1]:
                idx += 1
            if start != nums[idx]:
                ans.append(str(start) + "->" + str(nums[idx]))
            
            else:
                ans.append(str(start))
            idx += 1
        return ans
```
## 題目敘述
* 題目給一個由小到大排序 list `nums` ，題目要求分段輸出 list 的 range ，每段 range 中不可包含不在 `nums` 中的元素
* Example 1:

```
Input: nums = [0,1,2,4,5,7]
Output: ["0->2","4->5","7"]
Explanation: The ranges are:
[0,2] --> "0->2"
[4,5] --> "4->5"
[7,7] --> "7"
```

* Example 2:
```
Input: nums = [0,2,3,4,6,8,9]
Output: ["0","2->4","6","8->9"]
Explanation: The ranges are:
[0,0] --> "0"
[2,4] --> "2->4"
[6,6] --> "6"
[8,9] --> "8->9"
```

### 直覺
* 就遍歷 `nums` 裡面的數， 如果 nums[i]+1 == nums [i+1]，表示可以概括到同一個 range ，所以我要找到這 range 的尾，才可以輸出
    1. 如果 nums[i]+1 != nums [i+1]，他就是尾
* 如果 nums[i] 跟前一個後一個都不連續，直接輸出即可