Sponsored
Sponsored
This approach involves detecting the start and end of each range by iterating through the array sequentially. You remember the start of a potential range and adjust the range's end as long as consecutive numbers are found. When a break in consecutiveness occurs, you fix the end of the current range and start a new one.
Time Complexity: O(n)
Space Complexity: O(n)
1
2from typing import List
3
4def summaryRanges(nums: List[int]) -> List[str]:
5 ranges = []
6 i = 0
7 while i < len(nums):
8 start = i
9 while i + 1 < len(nums) and nums[i] + 1 == nums[i + 1]:
10 i += 1
11 if start == i:
12 ranges.append(str(nums[start]))
13 else:
14 ranges.append(f"{nums[start]}->{nums[i]}")
15 i += 1
16 return ranges
17
Python uses a straightforward looping structure to find ranges. It uses format strings to easily concatenate numbers for ranges needing a '->'. This solution appends directly to list using range or single-potential numbers.
This approach utilizes a two-pointer method where one pointer marks the beginning of a new range, and another pointer (or the loop index itself) expands the range as far as possible until the next number isn't consecutive. Once a sequence ends, if numbers are the same, it is a single-element range; otherwise, a range connecting two different numbers is formed.
Time Complexity: O(n)
Space Complexity: O(n)
1
The two-pointer approach in C keeps two indices. The starting pointer begins a new potential range. The other adjusts as long as numbers are consecutive. Once they diverge, it involves forming a possible range string or single number and returning when done.