版权声明: https://blog.csdn.net/weixin_40550726/article/details/83003789
给定一个无重复元素的有序整数数组,返回数组区间范围的汇总。
示例 1:
输入: [0,1,2,4,5,7] 输出: ["0->2","4->5","7"] 解释: 0,1,2 可组成一个连续的区间; 4,5 可组成一个连续的区间。
示例 2:
输入: [0,2,3,4,6,8,9] 输出: ["0","2->4","6","8->9"] 解释: 2,3,4 可组成一个连续的区间; 8,9 可组成一个连续的区间。
思路:双指针,startIndex指向连续区间的头元素,endIndex指向连续区间的尾元素。
class Solution {
public List<String> summaryRanges(int[] nums) {
List<String> res=new LinkedList<String>();
if(null==nums||nums.length==0){
return res;
}
int startIndex=0;
int endIndex=0;
for(startIndex=0,endIndex=0;endIndex<nums.length-1;){
if(nums[endIndex]==nums[endIndex+1]-1){
endIndex++;
}else{
String tmp="";
if(startIndex==endIndex){
tmp+=nums[startIndex];
}else{
tmp+=nums[startIndex]+"->"+nums[endIndex];
}
res.add(tmp);
startIndex=endIndex+1;
endIndex++;
}
}
String tmp="";
if(startIndex==endIndex){
tmp+=nums[startIndex];
}else{
tmp+=nums[startIndex]+"->"+nums[endIndex];
}
res.add(tmp);
return res;
}
}