Summary Ranges
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”].
CODE
public class Solution {
public List<String> summaryRanges(int[] nums) {
List<String> list = new ArrayList<String>();
quicksort(nums, 0, nums.length-1);
int i=0;
while(i<nums.length){
int index=i;
String temp=nums[i]+"";
while(i+1<nums.length&&nums[i+1]-nums[i]==1) i++;
if(i==index){
list.add(temp);
}
else{
temp+="->"+nums[i];
list.add(temp);
}
i++;
}
return list;
}
//进行快速排序
public int part(int[] nums,int low,int high){
int temp=nums[low];
while(low<high){
while(low<high&&nums[high]>=temp) high--;
nums[low]=nums[high];
while(low<high&&nums[low]<=temp) low++;
nums[high]=nums[low];
}
nums[low]=temp;
return low;
}
public void quicksort(int[] nums,int low,int high){
if(low<high){
int pos= part(nums,low,high);
quicksort(nums, low, pos-1);
quicksort(nums, pos+1, high);
}
}
}