Sobes.tech
Back to questions
Senior
1

Задача на написание кода: найти наименьшее натуральное число, отсутствующее в массиве

Companies where asked
Flant

Answer from AI

sobes.tech AI

Задача: найти наименьшее натуральное число (больше 0), отсутствующее в массиве.

Пример решения на Go с линейной сложностью и использованием дополнительной памяти:

package main

import "fmt"

func findMissingPositive(nums []int) int {
    n := len(nums)
    present := make([]bool, n+1) // индексы от 0 до n

    for _, num := range nums {
        if num > 0 && num <= n {
            present[num] = true
        }
    }

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

    return n + 1
}

func main() {
    arr := []int{3, 4, -1, 1}
    fmt.Println(findMissingPositive(arr)) // Выведет 2
}

Идея: отмечаем, какие числа от 1 до n встречаются, затем ищем первое отсутствующее. Если все есть, ответ n+1.