228. Summary Ranges
https://leetcode.com/problems/summary-ranges/description/?envType=study-plan-v2&envId=top-interview-150
Easy:
You are given a sorted unique integer array nums.
A range [a,b] is the set of all integers from a to b (inclusive).
Return the smallest sorted list of ranges that cover all the numbers in the array exactly. That is, each element of nums is covered by exactly one of the ranges, and there is no integer x such that x is in one of the ranges but not in nums.
Each range [a,b] in the list should be output as:
"a->b"ifa != b"a"ifa == b
Example 1:
Input: nums = [0,1,2,4,5,7]
Output: ["0->2","4->5","7"]
Explanation: The ranges are:
[0,2] --> "0->2"
[4,5] --> "4->5"
[7,7] --> "7"Example 2:
Input: nums = [0,2,3,4,6,8,9]
Output: ["0","2->4","6","8->9"]
Explanation: The ranges are:
[0,0] --> "0"
[2,4] --> "2->4"
[6,6] --> "6"
[8,9] --> "8->9"
Constraints:
0 <= nums.length <= 20-231 <= nums[i] <= 231 - 1All the values of
numsare unique.numsis sorted in ascending order.
Approach :
Initialization: Start by iterating over the array. Maintain two pointers or variables:
startto track the beginning of a potential range.endto determine the end of the current contiguous range.
Iteration:
Traverse through the array and check if the current number is consecutive to the previous one.
If it is not consecutive, close the current range and start a new one.
Range Formatting:
If
start == end, the range consists of a single number.Otherwise, format it as
start->end.
Edge Cases:
Handle empty arrays.
Handle arrays with only one element.
Algorithm Steps :
Initialize
startto the first element ofnums.Iterate through
nums:If a gap between
nums[i]andnums[i-1]exists, record the range[start, nums[i-1]]and resetstarttonums[i].
At the end of the loop, add the final range.
Return the formatted ranges.
Last updated
Was this helpful?