163. Missing Ranges

LeetCode easy original: C# #array #csharp #easy #leetcode #search #sort
Il testo del problema è tradotto dal russo per la lingua selezionata. Il codice resta invariato.

Вам дан диапазон [lower, upper] и sorted array уникальных целых чисел nums, где все elementы находятся в этом диапазоне.

number x считается пропущенным, если оно находится в диапазоне [lower, upper] и его нет в arrayе nums.

return кратчайший sorted список диапазонов, который точно покрывает все пропущенные числа. То есть ни один element из nums не включен в какой-либо из диапазонов, и каждое пропущенное number покрыто одним из диапазонов..

Esempio:

Input: nums = [-1], lower = -1, upper = -1

Output: []

Explanation: There are no missing ranges since there are no missing numbers.

C# soluzione

abbinato/originale
public 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++ soluzione

bozza automatica, rivedere prima dell'invio
#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 soluzione

abbinato/originale
class 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 soluzione

abbinato/originale
var 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 soluzione

abbinato/originale
class 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 soluzione

abbinato/originale
func 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.

Vacancies for this task

offerte attive with overlapping task tags are mostrati.

Tutte le offerte
Non ci sono ancora offerte attive.