163. Missing Ranges
Der Aufgabentext wird für die gewählte Sprache aus dem Russischen übersetzt. Code bleibt unverändert.
Вам дан диапазон [lower, upper] и sorted Array уникальных целых чисел nums, где все elementы находятся в этом диапазоне.
number x считается пропущенным, если оно находится в диапазоне [lower, upper] и его нет в Arrayе nums.
return кратчайший sorted список диапазонов, который точно покрывает все пропущенные числа. То есть ни один element из nums не включен в какой-либо из диапазонов, и каждое пропущенное number покрыто одним из диапазонов..
Beispiel:
Input: nums = [-1], lower = -1, upper = -1
Output: []
Explanation: There are no missing ranges since there are no missing numbers.
C# Lösung
zugeordnet/originalpublic class Solution {
public IList<IList<int>>
FindMissingRanges(int[] nums, int lower, int upper) {
int n = nums.Length;
IList<IList<int>> missingRanges = new List<IList<int>>();
if (n == 0) {
missingRanges.Add(new List<int>() { lower, upper });
return missingRanges;
}
if (lower < nums[0]) {
missingRanges.Add(new List<int>() { lower, nums[0] - 1 });
}
for (int i = 0; i < n - 1; i++) {
if (nums[i + 1] - nums[i] <= 1) {
continue;
}
missingRanges.Add(new List<int>() { nums[i] + 1, nums[i + 1] - 1 });
}
if (upper > nums[n - 1]) {
missingRanges.Add(new List<int>() { nums[n - 1] + 1, upper });
}
return missingRanges;
}
}
C++ Lösung
Auto-Entwurf, vor dem Einreichen prüfen#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 IList<vector<int>>
FindMissingRanges(vector<int>& nums, int lower, int upper) {
int n = nums.size();
IList<vector<int>> missingRanges = new List<vector<int>>();
if (n == 0) {
missingRanges.push_back(new List<int>() { lower, upper });
return missingRanges;
}
if (lower < nums[0]) {
missingRanges.push_back(new List<int>() { lower, nums[0] - 1 });
}
for (int i = 0; i < n - 1; i++) {
if (nums[i + 1] - nums[i] <= 1) {
continue;
}
missingRanges.push_back(new List<int>() { nums[i] + 1, nums[i + 1] - 1 });
}
if (upper > nums[n - 1]) {
missingRanges.push_back(new List<int>() { nums[n - 1] + 1, upper });
}
return missingRanges;
}
}
Java Lösung
zugeordnet/originalclass Solution {
public List<List<Integer>> findMissingRanges(
int[] nums,
int lower,
int upper
) {
int n = nums.length;
List<List<Integer>> missingRanges = new ArrayList<>();
if (n == 0) {
missingRanges.add(Arrays.asList(lower, upper));
return missingRanges;
}
if (lower < nums[0]) {
missingRanges.add(Arrays.asList(lower, nums[0] - 1));
}
for (int i = 0; i < n - 1; i++) {
if (nums[i + 1] - nums[i] <= 1) {
continue;
}
missingRanges.add(Arrays.asList(nums[i] + 1, nums[i + 1] - 1));
}
if (upper > nums[n - 1]) {
missingRanges.add(Arrays.asList(nums[n - 1] + 1, upper));
}
return missingRanges;
}
}
JavaScript Lösung
zugeordnet/originalvar findMissingRanges = function (nums, lower, upper) {
let n = nums.length;
let missingRanges = [];
if (n === 0) {
missingRanges.push([lower, upper]);
return missingRanges;
}
if (lower < nums[0]) {
missingRanges.push([lower, nums[0] - 1]);
}
for (let i = 0; i < n - 1; i++) {
if (nums[i + 1] - nums[i] <= 1) {
continue;
}
missingRanges.push([nums[i] + 1, nums[i + 1] - 1]);
}
if (upper > nums[n - 1]) {
missingRanges.push([nums[n - 1] + 1, upper]);
}
return missingRanges;
};
Python Lösung
zugeordnet/originalclass Solution:
def findMissingRanges(
self, nums: List[int], lower: int, upper: int
) -> List[List[int]]:
n = len(nums)
missing_ranges = []
if n == 0:
missing_ranges.append([lower, upper])
return missing_ranges
if lower < nums[0]:
missing_ranges.append([lower, nums[0] - 1])
for i in range(n - 1):
if nums[i + 1] - nums[i] <= 1:
continue
missing_ranges.append([nums[i] + 1, nums[i + 1] - 1])
if upper > nums[n - 1]:
missing_ranges.append([nums[n - 1] + 1, upper])
return missing_ranges
Go Lösung
zugeordnet/originalfunc findMissingRanges(nums []int, lower int, upper int) [][]int {
n := len(nums)
missingRanges := make([][]int, 0)
if n == 0 {
missingRanges = append(missingRanges, []int{lower, upper})
return missingRanges
if lower < nums[0] {
missingRanges = append(missingRanges, []int{lower, nums[0] - 1})
} for i := 0; i < n-1; i++ {
if nums[i+1]-nums[i] <= 1 {
continue
}
missingRanges = append(missingRanges, []int{nums[i] + 1, nums[i+1] - 1})
}
if upper > nums[n-1] {
missingRanges = append(missingRanges, []int{nums[n-1] + 1, upper})
}
return missingRanges
}
Algorithm
1️⃣
Инициализация и проверка начальных условий:
Создайте переменную n и инициализируйте её размером Arrayа nums.
Stellen zu dieser Aufgabe
aktive Stellen with overlapping task tags are angezeigt.
Es gibt noch keine aktiven Stellen.