题目要求:
228. Summary Ranges
Question
Editorial Solution
Total Accepted: 47215 Total Submissions:191166 Difficulty: Medium
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"].
<pre name="code" class="java">package cn.edu.bupt;
import java.util.ArrayList;
import java.util.List;
public class SummaryRanges228 {
public List<String> summaryRanges(int[] nums) {
List <String>result=new<String> ArrayList();
if(nums==null||nums.length==0){return result;}
boolean flag=false;
int start=0;
int end=0;
int i=0;
while(i<nums.length)
{
if(flag==false)
{
start=i;
if(i==nums.length-1&&flag==false)
{result.add(nums[i]+"");}
flag=true;
i++;
}
else
{
if(nums[i]==nums[i-1]+1)
{
i++;
if(i==nums.length&&flag==true)
{
result.add(nums[start]+"->"+nums[i-1]);
}
}
else
{
flag=false;
end=i-1;
if(end==start)
result.add(nums[start]+"");
else
result.add(nums[start]+"->"+nums[end]);
}
}
}
return result;
}
public List<String> summaryRanges2(int[] nums)
{
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;
}
public static void main(String[] args) {
SummaryRanges228 sr228=new SummaryRanges228();
int[] nums=new int[]{1,3,4,5};
System.out.println(sr228.summaryRanges2(nums));
sr228.summaryRanges(nums);
// TODO Auto-generated method stub
}
}