163. Missing Ranges

LeetCode easy original: C# #array #csharp #easy #leetcode #search #sort
Văn bản bài toán được dịch từ tiếng Nga theo ngôn ngữ giao diện. Mã không thay đổi.

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

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

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

Ví dụ:

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

Output: []

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

C# lời giải

đã khớp/gốc
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++ lời giải

bản nháp tự động, xem lại trước khi gửi
#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ời giải

đã khớp/gốc
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 lời giải

đã khớp/gốc
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 lời giải

đã khớp/gốc
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 lời giải

đã khớp/gốc
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 и инициализируйте её размером mảngа nums.

Vacancies for this task

việc làm đang hoạt động with overlapping task tags are đã hiển thị.

Tất cả việc làm
Chưa có việc làm đang hoạt động.