Problem: 228. 汇总区间
👨🏫 参考题解
import java.util.ArrayList;
import java.util.List;
class Solution {
public List<String> summaryRanges(int[] nums) {
List<String> ret = new ArrayList<String>(); // 存储结果的列表
int i = 0; // 数组的当前下标
int n = nums.length; // 数组的长度
// 遍历数组
while (i < n) {
int low = i; // 记录区间的起始位置
i++; // 移动到下一个元素
// 检查相邻元素是否连续
while (i < n && nums[i] == nums[i - 1] + 1) {
i++; // 继续移动下标
}
int high = i - 1; // 记录区间的结束位置
StringBuffer temp = new StringBuffer(Integer.toString(nums[low])); // 创建区间字符串的开头
// 生成区间的字符串表示
if (low < high) {
temp.append("->"); // 如果是区间,添加 "->"
temp.append(Integer.toString(nums[high])); // 添加区间的结束值
}
// 将生成的区间字符串添加到结果列表中
ret.add(temp.toString());
}
return ret; // 返回所有的区间
}
}
// 复杂度分析
// 时间复杂度:O(n),其中 n 为数组的长度。每个元素最多被访问两次。
// 空间复杂度:O(1)。除了用于输出的空间外,额外使用的空间为常数。