闯关leetcode——228. Summary Ranges
大纲
- 题目
- 地址
- 内容
- 解题
- 代码地址
题目
地址
https://leetcode.com/problems/summary-ranges/description/
内容
You are given a sorted unique integer array nums
.
A range[a,b]
is the set of all integers from a
to b
(inclusive).
Return the smallest sorted list of ranges that cover all the numbers in the array exactly. That is, each element of nums
is covered by exactly one of the ranges, and there is no integer x
such that x
is in one of the ranges but not in nums
.
Each range [a,b]
in the list should be output as:
"a->b"
ifa != b
"a"
ifa == b
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”
Constraints:
- 0 <= nums.length <= 20
- -231 <= nums[i] <= 231 - 1
- All the values of nums are unique.
- nums is sorted in ascending order.
解题
这题就是要将一个从小到大排序的数组,使用一组区间表示。孤立的区间只记录孤立的值,长度超过1的区间使用“起始值->结束值”的方式表示。
解题思路就是记录起始值后,向后寻找连续的最终值。根据区间中元素个数决定表达方式。
代码地址
https://github.com/f304646673/leetcode/blob/main/228-Summary-Ranges/cplusplus/src/solution.hpp