228. Summary Ranges
Вам дан отсортированный массив уникальных целых чисел nums.
Диапазон [a,b] - это множество всех целых чисел от a до b (включительно).
Верните наименьший отсортированный список диапазонов, которые покрывают все числа в массиве точно. То есть, каждый элемент 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++ решение
auto-draft, проверить перед отправкой#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))
}
Вакансии для этой задачи
Показаны активные вакансии с пересечением по тегам задачи.
Активных вакансий пока нет.