SparseVector и эффективный dot product

MediumАлгоритмы
07:00
Лучше работает на десктопе
AlgorithmsHash MapSparse VectorOOP
YouTube00:06:10-00:14:452025 11 24 16:00 Купер ТехСобес Алгоритмы и Python [YouTube UTtpEy120Vw]Страница собеса

Реализуйте класс SparseVector для разреженных векторов.

Конструктор получает длину вектора и список пар [index, value]. Нулевые значения хранить не нужно. Метод dot(other) должен вернуть скалярное произведение двух векторов и работать по меньшему числу ненулевых координат.

В тренажере используется wrapper sparse_vector_dot: он создает два вектора и вызывает dot. Если длины векторов различаются, wrapper должен вернуть строку "length_mismatch".

Сигнатура

def sparse_vector_dot(length_a: int, values_a: list[list[int]], length_b: int, values_b: list[list[int]]) -> int:

Примеры

Пример 1

Вход:
self = 5
length = [[0,1],[3,2]]
values = 5
arg4 = [[3,4],[4,5]]
Выход:8

Пример 2

Вход:
self = 4
length = [[0,7],[2,0]]
values = 4
arg4 = [[1,3],[3,9]]
Выход:0

Пример 3

Вход:
self = 3
length = [[0,-2],[2,5]]
values = 3
arg4 = [[0,4],[2,-1]]
Выход:-13
Консоль
Нажмите Run или Ctrl+Enter для запуска