找出数组中的所有区间。由于输入的数组是有序的且无重复元素,那么我们遍历一遍数组即可,时间代价是O(n)的。
用两个数字记录当前区间的起止,通过判断nums[i]和nums[i-1]的关系来判断是否区间连续。
另外用一个bool型first来判断还否需要赋初值
public class Solution {
public List<String> summaryRanges(int[] nums) {
List<String> rt= new ArrayList<String>();
int st=Integer.MIN_VALUE,ed=Integer.MIN_VALUE;
int length = nums.length;
boolean first = true;
for( int i=0;i<length;i++ )
{
if(first == true)
{
st = nums[i];
ed = nums[i];
first = false;
continue;
}
else if( i<length && nums[i]==nums[i-1]+1 )
{
ed = nums[i];
continue;
}
String temp = "";
if(ed == st )
{
temp = temp + ed;
}
else
{
temp = st+"->"+ed;
}
rt.add(temp);
st = nums[i];
ed = nums[i];
}
if(st != Integer.MIN_VALUE )
{
String temp = "";
if(ed == st )
{
temp = temp + ed;
}
else
{
temp = st+"->"+ed;
}
rt.add(temp);
}
return rt;
}
}