思路:
用start和end指针来定位每一段的区间。
时间复杂度:O(N),空间复杂度:O(N)。
java code:
public class Solution {
public List<String> summaryRanges(int[] nums) {
if(nums == null) return null;
List<String> ans = new ArrayList<String>();
if(nums.length == 0) return ans;
if(nums.length == 1) {
ans.add(nums[0] + "");
return ans;
}
int start = 0, end = 0;
for(int i = 1; i < nums.length; ++i) {
if(nums[i] - 1 == nums[i - 1]) {
end = i;
}else {
if(end == start) {
ans.add(nums[start] + "");
}else {
ans.add(nums[start] + "->" + nums[end]);
}
start = end = i;
}
}
if(end == start) {
ans.add(nums[start] + "");
}else {
ans.add(nums[start] + "->" + nums[end]);
}
return ans;
}
}