41. First Missing Positive

LeetCode hard original: C# #array #csharp #hard #leetcode #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.

Дан неsorted mảng целых чисел nums. return наименьшее положительное số nguyên, которого нет в mảngе nums.

C# lời giải

đã khớp/gốc
public class Solution {
    public int FirstMissingPositive(int[] nums) {
        int n = nums.Length;
        bool[] seen = new bool[n + 1];
        
        foreach (int num in nums) {
            if (num > 0 && num <= n) {
                seen[num] = true;
            }
        }
        for (int i = 1; i <= n; i++) {
            if (!seen[i]) {
                return i;
            }
        }
        return n + 1;
    }
}

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 int FirstMissingPositive(vector<int>& nums) {
        int n = nums.size();
        bool[] seen = new bool[n + 1];
        
        foreach (int num in nums) {
            if (num > 0 && num <= n) {
                seen[num] = true;
            }
        }
        for (int i = 1; i <= n; i++) {
            if (!seen[i]) {
                return i;
            }
        }
        return n + 1;
    }
}

Java lời giải

đã khớp/gốc
class Solution {
    public int firstMissingPositive(int[] nums) {
        int n = nums.length;
        boolean[] seen = new boolean[n + 1];

        for (int num : nums) {
            if (num > 0 && num <= n) {
                seen[num] = true;
            }
        }

        for (int i = 1; i <= n; i++) {
            if (!seen[i]) {
                return i;
            }
        }

        return n + 1;
    }
}

JavaScript lời giải

đã khớp/gốc
/**
 * @param {number[]} nums
 * @return {number}
 */
var firstMissingPositive = function(nums) {
    const n = nums.length
    const n1 = n + 1
    for (let i = 0; i < n; i++) 
        if (nums[i] <= 0 || nums[i] > n)
            nums[i] = n1
    for (let num of nums) {
        i = Math.abs(num) - 1
        if (i < n && nums[i] > 0)
            nums[i] *= -1
    }
    for (let i = 0; i < n; i++) 
        if (nums[i] > 0)
            return i + 1
    return n1  
};

Python lời giải

đã khớp/gốc
class Solution:
    def firstMissingPositive(self, nums):
        n = len(nums)
        seen = [False] * (n + 1)

        for num in nums:
            if 0 < num <= n:
                seen[num] = True

        for i in range(1, n + 1):
            if not seen[i]:
                return i

        return n + 1

Go lời giải

đã khớp/gốc
func firstMissingPositive(nums []int) int {
    n := len(nums)
    seen := make([]bool, n+1)
    
    for _, num := range nums {
        if num > 0 && num <= n {
            seen[num] = true
        }
    }

    for i := 1; i <= n; i++ {
        if !seen[i] {
            return i
        }
    }

    return n + 1
}

Algorithm

Ví dụ:

Input: nums = [3,4,-1,1]

Output: 2

Explanation: 1 is in the array but 2 is missing.

👨‍💻

Thuật toán:

1️⃣

Инициализировать переменную n длиной mảngа nums. Создать mảng seen размером n + 1. Отметить elementы в mảngе nums как просмотренные в mảngе seen.

Для каждого числа num в mảngе nums, если num больше 0 и меньше или равно n, установить seen[num] в значение true.

2️⃣

find наименьшее недостающее положительное number:

Проитерировать от 1 до n, и если seen[i] не равно true, вернуть i как наименьшее недостающее положительное number.

3️⃣

Если mảng seen содержит все elementы от 1 до n, вернуть n + 1 как наименьшее недостающее положительное number.

😎

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.