🌗 228. 汇总区间
2022年10月10日
- algorithm
🌗 228. 汇总区间
难度: 🌗
问题描述
解法
class Solution {
public List<String> summaryRanges(int[] nums) {
// 思路:
// 遍历数组,遇到非连续区间,将前面的区间加入结果集
List<String> res = new ArrayList<>();
int len = nums.length;
if(len == 0) {
return res;
}
int left = nums[0];
int right = nums[0];
for(int i = 1; i < len; i ++) {
if(nums[i] == nums[i - 1] + 1) {
right = nums[i];
} else {
// 将前面的区间加入结果集
if(left == right) {
String s = "" + left;
res.add(s);
} else {
String s = "" + left + "->" + right;
res.add(s);
}
// 更新 left & right
left = nums[i];
right = nums[i];
}
}
// 将最后一个区间压栈
if(left == right) {
String s = "" + left;
res.add(s);
} else {
String s = "" + left + "->" + right;
res.add(s);
}
return res;
}
}