题目原文:
. 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”].
题目大意:
给出一个排序的数组,没有重复元素,用区间的字符串表示。
例如给出[0,1,2,4,5,7], 返回[“0->2”,”4->5”,”7”].
题目分析:
使用两个指针p1和p2,类似于滑动窗口,固定指针p1,一直滑动p2,直到p2的后继元素不等于p2所指元素+1(即出现间断),那么列表中增加一个字符串,并令p1指向p2的下一个节点,再滑动。如果p1就是一个间断的数字,那么直接把p1对应的字符串输入到列表中。
源码:(language:java)
public class Solution {
public List<String> summaryRanges(int[] nums) {
int len=nums.length;
List<String> answer=new ArrayList<String>();
if(len==0)
return answer;
int start=0,end=0;
while(start<len) {
String range;
while(end+1<len && nums[end+1]==nums[end]+1)
end++;
if(end!=start)
range=new Integer(nums[start]).toString()+"->"+new Integer(nums[end]).toString();
else
range=new Integer(nums[start]).toString();
answer.add(range);
end++;
start=end;
}
return answer;
}
}
成绩:
1ms,beats 3.19%,众数1ms,94.54%
本文介绍了一种用于给定排序数组的区间汇总算法,该算法能够高效地将连续整数表示为区间字符串。通过双指针技术实现,适用于无重复元素的整数数组。
5295

被折叠的 条评论
为什么被折叠?



