TGViewer
Node.js Backend | YeaHub Node.js Backend | YeaHub @yeahub_node_backend · 464 subscribers
Post #51 271
#ЛитКод
Задача: 311. Sparse Matrix Multiplication

Даны две разреженные матрицы mat1 размером m x k и mat2 размером k x n. Верните результат перемножения матриц mat1 x mat2. Вы можете предположить, что умножение всегда возможно.

Пример:
Input: mat1 = [[1,0,0],[-1,0,3]], mat2 = [[7,0,0],[0,0,0],[0,0,1]]
Output: [[7,0,0],[-7,0,3]]


👨‍💻 Алгоритм:

1⃣Инициализация результирующей матрицы
Создайте результирующую матрицу result размером m x n, заполненную нулями.

2⃣Хранение ненулевых элементов
Пройдите по каждой строке матрицы mat1 и сохраните индексы и значения ненулевых элементов в хеш-карте mat1_map. Пройдите по каждой колонке матрицы mat2 и сохраните индексы и значения ненулевых элементов в хеш-карте mat2_map.

3⃣Вычисление произведения
Для каждой строки i в mat1 и для каждой колонки j в mat2: Если в mat1_map есть ненулевой элемент в строке i и в mat2_map есть ненулевой элемент в колонке j с одинаковым индексом k, добавьте произведение этих элементов к result[i][j].

😎 Решение:
var multiply = function(mat1, mat2) {
let n = mat1.length;
let k = mat1[0].length;
let m = mat2[0].length;

let ans = Array.from({ length: n }, () => Array(m).fill(0));

for (let rowIndex = 0; rowIndex < n; rowIndex++) {
for (let elementIndex = 0; elementIndex < k; elementIndex++) {
if (mat1[rowIndex][elementIndex] !== 0) {
for (let colIndex = 0; colIndex < m; colIndex++) {
ans[rowIndex][colIndex] += mat1[rowIndex][elementIndex] * mat2[elementIndex][colIndex];
}
}
}
}

return ans;
};


👉Новости 👉Платформа
  • ❤ 1
More from @yeahub_node_backend
  1. Oct 16, 2026#trainer #курсы #тренажеры 📚 CodeChef Онлайн-платформа программирования, которая позволяе…
  2. Oct 15, 2026#Собес #jwt #claim #signature 🤔 Как работает авторизация на основе JWT-токенов? 💬 Кратко…
  3. Oct 14, 2026#Собес #falsy #value 🤔 Чем отличается проверка на falsy-значение от строгого сравнения? �…
  4. Oct 12, 2026#Собес #Observable #subscribe #RxJS 🤔 Как подписаться на Observable и получить данные из…
  5. Oct 9, 2026#book #начинающие 📚 Node.js: разработка приложений в микросервисной архитектуре с нуля Ос…
  6. Oct 8, 2026#Собес #volume #bind #mount 🤔 Как считать данные, записанные контейнером? 💬 Кратко: Данн…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →