Дан отсортированный по неубыванию список целых чисел a, индекс элемента index и целое число k.

Задача: для каждого K от 1 до N посчитать количество общих уникальных чисел в префиксах длины K двух массивов.

Короткий ответ

Что ответить на собеседовании

Задача: для каждого K от 1 до N посчитать количество общих уникальных чисел в префиксах длины K двух массивов.

Подробный разбор

Ответ с пояснениями

Условие

Дан отсортированный по неубыванию список целых чисел a, индекс элемента index и целое число k. Необходимо вернуть в любом порядке k чисел из списка, которые являются ближайшими по значению к элементу a[index].

a=[2, 3, 5, 7, 11], index=3, k=2 -> [5, 7] a=[4, 12, 15, 15, 24], index=1, k=3 -> [12, 15, 15] a=[2, 3, 5, 7, 11], index=2, k=2 -> [3, 5] или [5, 7]

Ответ

Задача: для каждого K от 1 до N посчитать количество общих уникальных чисел в префиксах длины K двух массивов.

Идея решения:

  • Использовать два множества для хранения уникальных элементов префиксов каждого массива.
  • Итерироваться по индексам от 0 до N-1, добавляя элементы в соответствующие множества.
  • На каждом шаге считать пересечение множеств и записывать размер пересечения.

Пример на Go:

package main

import (
	"fmt"
)

func commonPrefixCounts(A, B []int) []int {
	N := len(A)
	setA := make(map[int]struct{})
	setB := make(map[int]struct{})
	result := make([]int, N)

	for i := 0; i < N; i++ {
		setA[A[i]] = struct{}{}
		setB[B[i]] = struct{}{}

		count := 0
		for val := range setA {
			if _, exists := setB[val]; exists {
				count++
			}
		}
		result[i] = count
	}
	return result
}

func main() {
	A := []int{1, 2, 5}
	B := []int{1, 5, 4}
	res := commonPrefixCounts(A, B)
	fmt.Println(res) // Output: [1 2 2]
}

Такой подход работает за O(N*M), где M — среднее количество уникальных элементов в префиксах. Для оптимизации можно использовать структуры данных с подсчетом частот и динамическим обновлением пересечения.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее