228 - Summary Ranges
Written on January 18, 2020
Tweet
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”].
public class Solution {
public List<String> summaryRanges(int[] nums) {
List<String> result = new ArrayList<>();
if (nums == null || nums.length == 0) return result;
int i = 0;
while (i < nums.length) {
int j = i + 1;
while (j < nums.length && nums[j] == nums[j - 1] + 1) {
j ++;
}
if (j - i == 1) {
String range = String.valueOf(nums[i]);
result.add(range);
} else {
String range = nums[i] + "->" + nums[j - 1];
result.add(range);
}
i = j;
}
return result;
}
}
class Solution:
def summaryRanges(self, nums: List[int]) -> List[str]:
if not nums:
return []
ret = [[nums[0]]]
for num in nums[1:]:
prev = ret[-1][-1]
if num > prev + 1:
ret.append([num])
else:
ret[-1][1:] = num,
return ["->".join(map(str, n)) for n in ret]