15 Jun 2024C++ / Python / TypeScriptEasy

Summary Ranges

Collected C++, Python, TypeScript solutions for summary ranges. Add a dedicated write-up later if you want deeper notes.

auto-generated entry for Summary Ranges. the solution files are available below.

solution files

  • C++ summary-ranges/synced-solution.cpp
  • Python summary-ranges/synced-solution.py
  • TypeScript summary-ranges/synced-solution.ts

Solution files

Pythonsummary-ranges/synced-solution.py
def summaryRanges(nums: list[int]) -> list[str]:
    result = []
    i = class="syntax-number">0
    while i < len(nums):
        start = nums[i]
        while i + class="syntax-number">1 < len(nums) and nums[i + class="syntax-number">1] == nums[i] + class="syntax-number">1:
            i += class="syntax-number">1
        end = nums[i]
        if start == end:
            result.append(str(start))
        else:
            result.append(fclass="syntax-string">"{start}->{end}")
        i += class="syntax-number">1
    return result
C++summary-ranges/synced-solution.cpp
class Solution {
public:
    vector<string> summaryRanges(vector<int>& nums) {
        vector<string> result;
        int i = class="syntax-number">0;
        while (i < nums.size()) {
            long long start = nums[i];
            while (i + class="syntax-number">1 < nums.size() && (long long)nums[i + class="syntax-number">1] == nums[i] + class="syntax-number">1) {
                i++;
            }
            long long end = nums[i];
            if (start == end) {
                result.push_back(to_string(start));
            } else {
                result.push_back(to_string(start) + class="syntax-string">"->" + to_string(end));
            }
            i++;
        }
        return result;
    }
};
TypeScriptsummary-ranges/synced-solution.ts
function summaryRanges(nums: number[]): string[] {
    const result: string[] = [];
    let i = class="syntax-number">0;
    while (i < nums.length) {
        const start = nums[i];
        while (i + class="syntax-number">1 < nums.length && nums[i + class="syntax-number">1] === nums[i] + class="syntax-number">1) {
            i++;
        }
        const end = nums[i];
        if (start === end) {
            result.push(String(start));
        } else {
            result.push(`${start}->${end}`);
        }
        i++;
    }
    return result;
}