0%

leetcode 228.汇总区间

问题
在这里插入图片描述

思路
使用两个指针,start指向本区间开始,end指向本区间结束,如果nums[i]=end+1,即属于这个区间,则区间end+1,否则加入list,注意最后一个位置的边界处理

时间
在这里插入图片描述
代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
class Solution {
public List<String> summaryRanges(int[] nums) {
List<String> list=new ArrayList<>();
if(nums.length==0)return list;
if(nums.length==1){
list.add(nums[0]+"");
return list;
}
int start=nums[0];
int end=nums[0];
for(int i=1;i<nums.length;i++){
if(i==nums.length-1){
if(nums[i]==end+1){
list.add(start+"->"+nums[i]);
break;
}else{
if(start==end){
list.add(start+"");
}else{
list.add(start+"->"+end);
}
list.add(nums[i]+"");
break;
}
}
if(nums[i]==end+1){
end=nums[i];
}else{
if(start==end){
list.add(start+"");
}else{
list.add(start+"->"+end);
}
start=nums[i];
end=start;
}
}
return list;
}
}