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