Given a sorted integer array without duplicates, return the summary of its ranges.
For example, given [0,1,2,4,5,7]
, return ["0->2","4->5","7"].
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
code:
public class Solution {
public List<String> summaryRanges(int[] nums) {
List<String> list = new ArrayList<String>();
if(nums==null || nums.length==0)
return list;
if(nums.length==1){
list.add(nums[0]+"");
return list;
}
int start=nums[0],end=nums[0];
for(int i=1; i<nums.length; i++){
if(nums[i-1]+1==nums[i]){
end = nums[i];
}else{
addToArr(list,start, end);
start = end = nums[i];
}
}
addToArr(list,start, end);
return list;
}
private void addToArr(List<String> list, int start, int end){
if(start == end)
list.add(start+"");
else
list.add(start+"->"+end);
}
}