Summary Ranges

Easyarray
Category: Array & Hashing
Companies that ask this question:
AmazonGoogle

Approach

Summary Ranges

Approach

Track range start and detect breaks in consecutive sequence.

Algorithm

  1. Track range start index
  2. For each position:
    • If last element OR next element not consecutive:
      • Add range to result (single number or start->end)
      • Update start to next position
  3. Return result

Complexity

  • Time: O(n) - single pass
  • Space: O(1) - excluding output

Key Insights

  • Detect range breaks by checking if next != current + 1
  • Handle single element ranges separately

Solution

java
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}
Loading visualizer...