问题

 
思路
使用两个指针,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;     } }
  |