Given a sorted integer array without duplicates, return the summary of its ranges.
Example 1:
Input: [0,1,2,4,5,7]
Output: ["0->2","4->5","7"]
Explanation: 0,1,2 form a continuous range; 4,5 form a continuous range.
Example 2:
Input: [0,2,3,4,6,8,9]
Output: ["0","2->4","6","8->9"]
Explanation: 2,3,4 form a continuous range; 8,9 form a continuous range.
代码
Approach #1
class Solution {
public List<String> summaryRanges(int[] nums) {
List<String> summary = new ArrayList<>();
int start = 0;
for (int j = 0; j < nums.length; ++j){
start = j;
// try to extend the range [nums[i], nums[j]]
while (j + 1 < nums.length && nums[j + 1] == nums[j] + 1)
++j;
// put the range into the list
if (start == j)
summary.add(nums[start] + "");
else
summary.add(nums[start] + "->" + nums[j]);
}
return summary;
}
}