228. Summary Ranges

선택한 UI 언어에 맞게 문제 텍스트를 러시아어에서 번역합니다. 코드는 변경하지 않습니다.

Вам дан sorted 배열 уникальных целых чисел nums.

Диапазон [a,b] - это множество всех целых чисел от a до b (включительно).

return наименьший sorted список диапазонов, которые покрывают все числа в 배열е точно. То есть, каждый element nums покрывается ровно одним из диапазонов, и не существует такого целого числа x, чтобы x находился в одном из диапазонов, но не находился в nums.

Каждый диапазон [a,b] в списке должен быть представлен в формате:

"a->b" если a != b

"a" если a == b

예제

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"

C# 해법

매칭됨/원본
public class Solution {
    public IList<string> SummaryRanges(int[] nums) {
        var ranges = new List<string>();
        int i = 0;
        while (i < nums.Length) {
            int start = nums[i];
            while (i + 1 < nums.Length && nums[i] + 1 == nums[i + 1]) {
                i++;
            }
            if (start != nums[i]) {
                ranges.Add(start + "->" + nums[i]);
            } else {
                ranges.Add(start.ToString());
            }
            i++;
        }
        return ranges;
    }
}

C++ 해법

자동 초안, 제출 전 검토
#include <bits/stdc++.h>
using namespace std;

// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
    public vector<string> SummaryRanges(vector<int>& nums) {
        var ranges = new List<string>();
        int i = 0;
        while (i < nums.size()) {
            int start = nums[i];
            while (i + 1 < nums.size() && nums[i] + 1 == nums[i + 1]) {
                i++;
            }
            if (start != nums[i]) {
                ranges.push_back(start + "->" + nums[i]);
            } else {
                ranges.push_back(start.ToString());
            }
            i++;
        }
        return ranges;
    }
}

Java 해법

매칭됨/원본
class Solution {
    public List<String> summaryRanges(int[] nums) {
        List<String> ranges = new ArrayList<>();
        int i = 0;
        while (i < nums.length) {
            int start = nums[i];
            while (i + 1 < nums.length && nums[i] + 1 == nums[i + 1]) {
                i++;
            }
            if (start != nums[i]) {
                ranges.add(start + "->" + nums[i]);
            } else {
                ranges.add(Integer.toString(start));
            }
            i++;
        }
        return ranges;
    }
}

JavaScript 해법

매칭됨/원본
class Solution {
    summaryRanges(nums) {
        let ranges = []
        let i = 0
        while (i < nums.length) {
            let start = nums[i]
            while (i + 1 < nums.length && nums[i] + 1 == nums[i + 1]) {
                i++
            }
            if (start != nums[i]) {
                ranges.push(`${start}->${nums[i]}`)
            } else {
                ranges.push(`${start}`)
            }
            i++
        }
        return ranges
    }
}

Python 해법

매칭됨/원본
class Solution:
    def summaryRanges(self, nums: List[int]) -> List[str]:
        ranges = []
        i = 0
        while i < len(nums):
            start = nums[i]
            while i + 1 < len(nums) and nums[i] + 1 == nums[i + 1]:
                i += 1
            if start != nums[i]:
                ranges.append(f"{start}->{nums[i]}")
            else:
                ranges.append(f"{start}")
            i += 1
        return ranges

Go 해법

매칭됨/원본
package main

import (
    "fmt"
    "strconv"
)

func summaryRanges(nums []int) []string {
    ranges := []string{}
    i := 0
    for i < len(nums) {
        start := nums[i]
        for i+1 < len(nums) && nums[i]+1 == nums[i+1] {
            i++
        }
        if start != nums[i] {
            ranges = append(ranges, strconv.Itoa(start)+"->"+strconv.Itoa(nums[i]))
        } else {
            ranges = append(ranges, strconv.Itoa(start))
        }
        i++
    }
    return ranges
}

func main() {
    nums := []int{0, 1, 2, 4, 5, 7}
    fmt.Println(summaryRanges(nums))
}

Vacancies for this task

활성 채용 with overlapping task tags are 표시됨.

전체 채용
아직 활성 채용이 없습니다.