Given a sorted integer array without duplicates, return the summary of its ranges.
Example 1:
1 2 3
| Input: [0,1,2,4,5,7] Output: ["0->2","4->5","7"]
|
Example 2:
1 2
| Input: [0,2,3,4,6,8,9] Output: ["0","2->4","6","8->9"]
|
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| class Solution { public List<String> summaryRanges(int[] nums) { List<String> ans = new ArrayList<String>(); if(nums.length == 0) return ans; StringBuilder ab = new StringBuilder(); boolean isStart = true; int i=0; int j=1; if(nums.length == 1){ ab.append(nums[0]); ans.add(ab.toString()); ab = null; return ans; } while(i<nums.length && j<nums.length){ if(nums[j]!=nums[i]+1){ ab.append(nums[i]); ans.add(ab.toString()); ab.delete(0, ab.length()); i=j; j=j+1; } else{ while(j<nums.length && nums[j]==nums[j-1]+1){ j++; } if(j > nums.length-1){ ab.append(nums[i] + "->" + nums[j-1]); ans.add(ab.toString()); ab.delete(0, ab.length()); i = j+1; j = j+2; } else{ ab.append(nums[i] + "->" + nums[j-1]); ans.add(ab.toString()); ab.delete(0, ab.length()); i = j; j = j+1; } } } if(j == nums.length-1){ ab.append(nums[j]); ans.add(ab.toString()); } if(i == nums.length-1){ ab.append(nums[i]); ans.add(ab.toString()); } return ans; } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| List<String> list=new ArrayList(); if(nums.length==1){ list.add(nums[0]+""); return list; } for(int i=0;i<nums.length;i++){ int a=nums[i]; while(i+1<nums.length&&(nums[i+1]-nums[i])==1){ i++; } if(a!=nums[i]){ list.add(a+"->"+nums[i]); }else{ list.add(a+""); } } return list;
|