Track range start and detect breaks in consecutive sequence.
1class Solution {
2 public List<String> summaryRanges(int[] nums) {
3 List<String> result = new ArrayList<>();
4 if (nums.length == 0) return result;
5
6 int start = 0;
7
8 for (int i = 0; i < nums.length; i++) {
9 if (i == nums.length - 1 || nums[i] + 1 != nums[i + 1]) {
10 if (start == i) {
11 result.add(String.valueOf(nums[start]));
12 } else {
13 result.add(nums[start] + "->" + nums[i]);
14 }
15 start = i + 1;
16 }
17 }
18
19 return result;
20 }
21}