这道题我写代码写的优点乱了。定义一个最初的起始位置(也就是范围的第一个)first,然后循环,nums[i]=nums[i-1],就继续循环。直到nums[i]!=nums[i-1]+1在做处理,范围就是first到nums[i-1],但如果first==nums[i-1] ,就输出“first”,其他输出”first->nums[i-1]”,还有一种特殊情况也就是i==nums.length-1,末尾,在判断最后一次,这道题1ms
public 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 first =nums[0];
String str = new String("");
for(int i=1;i<nums.length;i++){
if(nums[i]==nums[i-1]+1){
if(i==nums.length-1){
str = first+"->"+nums[i];
list.add(str);
break;
}
continue;
}else{
if(i==nums.length-1){
if(first == nums[i-1]){
str = first+"";
list.add(str);
}else{
str = first+"->"+nums[i-1];
list.add(str);
}
list.add(""+nums[i]);
break;
}
if(first == nums[i-1]){
str = first+"";
list.add(str);
first = nums[i];
}else{
str = first+"->"+nums[i-1];
list.add(str);
first = nums[i];
}
}
}
return list;
}
}