问题
思路
使用两个指针,start指向本区间开始,end指向本区间结束,如果nums[i]=end+1,即属于这个区间,则区间end+1,否则加入list,注意最后一个位置的边界处理
时间
代码
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;
}
}