Folioevanzhou.org
← 返回 Kata
EasyLeetCode2026-09-28原题 ↗

065Summary Ranges

array

Problem

给定一个按升序排列的整数数组 nums,其中没有重复元素。

请把数组中连续的整数整理成区间,返回能够恰好覆盖所有元素的最少区间列表。返回的区间也要按从小到大的顺序排列。

每个数组元素必须恰好属于一个区间,并且区间中不能包含原数组里没有的整数。

每个区间按以下格式表示为字符串:

  • 如果起点 a 和终点 b 不同,写成 "a->b"
  • 如果区间只有一个整数,写成 "a"

例如:

nums = [0, 1, 2, 4, 5, 7]

其中 0, 1, 2 是一段连续整数,4, 5 是另一段,7 单独构成一个区间。因此返回:

["0->2", "4->5", "7"]

注意:不能把它们全部写成 "0->7",因为这个区间还包含数组中没有的 3 和 6。

Examples

示例 1

Input:  nums = [0, 1, 2, 4, 5, 7]
Output: ["0->2", "4->5", "7"]

解释:数组分为三段连续整数,分别是 [0, 1, 2]、[4, 5] 和 [7]。

示例 2

Input:  nums = [0, 2, 3, 4, 6, 8, 9]
Output: ["0", "2->4", "6", "8->9"]

解释:0 和 6 各自单独构成区间,2, 3, 4 和 8, 9 分别构成连续区间。

示例 3

Input:  nums = []
Output: []

解释:空数组没有需要覆盖的元素,因此返回空列表。

Constraints

  • 0≤0 \leq nums.length ≤20\leq 20
  • −231≤-2^{31} \leq nums[i] ≤231−1\leq 2^{31} - 1
  • nums 中的所有元素互不相同
  • nums 按升序排列

最初怎么想、怎样补完整、最后如何落成。