LeetCode 311. 稀疏矩阵的乘法

文章目录

    • 1. 题目
    • 2. 解题
      • 2.1 暴力求解
      • 2.2 选取都不为0的行和列相乘

1. 题目

给你两个 稀疏矩阵 A 和 B,请你返回 AB 的结果。
你可以默认 A 的列数等于 B 的行数。

请仔细阅读下面的示例。

示例:
输入:
A = [[ 1, 0, 0],[-1, 0, 3]
]
B = [[ 7, 0, 0 ],[ 0, 0, 0 ],[ 0, 0, 1 ]
]
输出:|  1 0 0 |   | 7 0 0 |   |  7 0 0 |
AB = | -1 0 3 | x | 0 0 0 | = | -7 0 3 || 0 0 1 |

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sparse-matrix-multiplication
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

2.1 暴力求解

  • 3层 for 循环
class Solution {
public:vector<vector<int>> multiply(vector<vector<int>>& A, vector<vector<int>>& B) {vector<vector<int>> ans(A.size(), vector<int>(B[0].size(), 0));int i, j, k, sum;for(i = 0; i < A.size(); ++i)for(j = 0; j < B[0].size(); ++j){sum = 0;for(k = 0; k < A[0].size(); ++k)sum += A[i][k]*B[k][j];ans[i][j] = sum;}return ans;}
};

24 ms 8.4 MB

2.2 选取都不为0的行和列相乘

class Solution {
public:vector<vector<int>> multiply(vector<vector<int>>& A, vector<vector<int>>& B) {vector<bool> r_all0(A.size(),true);vector<bool> c_all0(B[0].size(),true);int i, j, k, sum;bool flag = false;for(i = 0; i < A.size(); ++i){flag = false;for(j = 0; j < A[0].size(); ++j){if(A[i][j]){flag = true;break;}}if(flag)r_all0[i] = false;}for(j = 0; j < B[0].size(); ++j){flag = false;for(i = 0; i < B.size(); ++i){if(B[i][j]){flag = true;break;}}if(flag)c_all0[j] = false;}vector<vector<int>> ans(A.size(), vector<int>(B[0].size(), 0));for(i = 0; i < A.size(); ++i)for(j = 0; j < B[0].size(); ++j){if(r_all0[i] || c_all0[j])continue;sum = 0;for(k = 0; k < A[0].size(); ++k)sum += A[i][k]*B[k][j];ans[i][j] = sum;}return ans;}
};

8 ms 8.6 MB


长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475230.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

创业产品经理需要懂技术吗?

作为一位工程师&#xff0c;和一位在不断追求更好产品的设计人员。个人认为&#xff0c;产品经理最好是这样的&#xff1a;一、 精通技术。技术很容易框住人的思想&#xff0c;要不特别精通&#xff0c;能随时跳出技术的束缚&#xff0c;带给产品真正的提升。一般这种产品经理会…

LeetCode 281. 锯齿迭代器(map+vector)

文章目录1. 题目2. 解题1. 题目 给出两个一维的向量&#xff0c;请你实现一个迭代器&#xff0c;交替返回它们中间的元素。 示例: 输入: v1 [1,2] v2 [3,4,5,6] 输出: [1,3,2,4,5,6]解析: 通过连续调用 next 函数直到 hasNext 函数返回 false&#xff0c;next 函数返回值的…

LeetCode 186. 翻转字符串里的单词 II

文章目录1. 题目2. 解题1. 题目 给定一个字符串&#xff0c;逐个翻转字符串中的每个单词。 示例&#xff1a; 输入: ["t","h","e"," ","s","k","y"," ","i","s","…

java自动的废料收集_Java 垃圾收集机制

对象引用Java 中的垃圾回收一般是在 Java 堆中进行&#xff0c;因为堆中几乎存放了 Java 中所有的对象实例。谈到 Java 堆中的垃圾回收&#xff0c;自然要谈到引用。在 JDK1.2 之前&#xff0c;Java 中的引用定义很很纯粹&#xff1a;如果 reference 类型的数据中存储的数值代表…

LeetCode 1198. 找出所有行中最小公共元素(二分/合并有序链表)

文章目录1. 题目2. 解题2.1 按列遍历2.2 二分查找2.3 合并k个有序链表1. 题目 给你一个矩阵 mat&#xff0c;其中每一行的元素都已经按 递增 顺序排好了。 请你帮忙找出在所有这些行中 最小的公共元素。 如果矩阵中没有这样的公共元素&#xff0c;就请返回 -1。 示例&#x…

java 分布式系统 面试_分布式系统的面试题9

1、面试题分布式服务接口请求的顺序性如何保证&#xff1f;2、面试官心里分析其实分布式系统接口的调用顺序&#xff0c;也是个问题&#xff0c;一般来说是不用保证顺序的。但是有的时候可能确实是需要严格的顺序保证。给大家举个例子&#xff0c;你服务A调用服务B&#xff0c;…

Windows phone 应用开发[14]-调用WebBrowser

很久没有更新博客了.最近一直陷身在项目中难以有时间抽身梳理总结.关于博客确实很多想写的主题.节前大概草草 的梳理一下大概就有十几个主题.只能趁着放假的时间来逐渐把这批文章力所能及系统的更新出来. 主要涉及到我们团队现在Windows phone 项目开发中实际碰到一些问题和对应…

LeetCode 369. 给单链表加一(递归)

文章目录1. 题目2. 解题1. 题目 用一个 非空 单链表来表示一个非负整数&#xff0c;然后将这个整数加一。 你可以假设这个整数除了 0 本身&#xff0c;没有任何前导的 0。 这个整数的各个数位按照 高位在链表头部、低位在链表尾部 的顺序排列。 示例: 输入: [1,2,3] 输出: …

LeetCode 1430. 判断给定的序列是否是二叉树从根到叶的路径(递归)

文章目录1. 题目2. 解题1. 题目 给定一个二叉树&#xff0c;我们称从根节点到任意叶节点的任意路径中的节点值所构成的序列为该二叉树的一个 “有效序列” 。 检查一个给定的序列是否是给定二叉树的一个 “有效序列” 。 我们以整数数组 arr 的形式给出这个序列。 从根节点到…

LeetCode 362. 敲击计数器(map)

文章目录1. 题目2. 解题1. 题目 设计一个敲击计数器&#xff0c;使它可以统计在过去5分钟内被敲击次数。 每个函数会接收一个时间戳参数&#xff08;以秒为单位&#xff09;&#xff0c;你可以假设最早的时间戳从1开始&#xff0c;且都是按照时间顺序对系统进行调用&#xff…

a算法TSP旅行商java_A*算法实现旅行商问题(人工智能报告,付代码)

一、问题描述“旅行商问题”常被称为“旅行推销员问题”&#xff0c;是指一名推销员要拜访多个地点时&#xff0c;如何找到在拜访每个地点一次后再回到起点的最短路径。规则虽然简单&#xff0c;但在地点数目增多后求解却极为复杂。旅行商问题在本实验中的具体化&#xff1a;从…

windows phone 7 中文天气预报应用--来源http://www.cnblogs.com/liulunet/archive/2011/08/17/2141696.html...

windows phone 7 中文天气预报应用wp7的应用还是太少了&#xff0c;中文应用更少。虽然有天气预报应用但是自己感觉并不好用&#xff0c;感觉这样的程序应该很简单&#xff0c;于是萌生了自己写一个的想法。 印证了群里朋友说的一句话&#xff1a;程序员往往都是使用别人的程序…

LeetCode 666. 路径和 IV(树的遍历)

文章目录1. 题目2. 解题1. 题目 对于一棵深度小于 5 的树&#xff0c;可以用一组三位十进制整数来表示。 对于每个整数&#xff1a; 百位上的数字表示这个节点的深度 D&#xff0c;1 < D < 4。十位上的数字表示这个节点在当前层所在的位置 P&#xff0c; 1 < P <…

Prim最小生成树算法

在一个具有几个顶点的连通图G中&#xff0c;如果存在子图G包含G中所有顶点和一部分边&#xff0c;且不形成回路&#xff0c;则称G为图G的生成树&#xff0c;代价最小生成树则称为最小生成树。 许多应用问题都是一个求无向连通图的最小生成树问题。例如&#xff1a;要…

LeetCode 1214. 查找两棵二叉搜索树之和(二叉树迭代器+双指针)

文章目录1. 题目2. 解题1. 题目 给出两棵二叉搜索树&#xff0c;请你从两棵树中各找出一个节点&#xff0c;使得这两个节点的值之和等于目标值 Target。 如果可以找到返回 True&#xff0c;否则返回 False。 示例 1&#xff1a; 输入&#xff1a;root1 [2,1,4], root2 [1,…

LeetCode 323. 无向图中连通分量的数目(并查集)

文章目录1. 题目2. 解题1. 题目 给定编号从 0 到 n-1 的 n 个节点和一个无向边列表&#xff08;每条边都是一对节点&#xff09;&#xff0c;请编写一个函数来计算无向图中连通分量的数目。 示例 1: 输入: n 5 和 edges [[0, 1], [1, 2], [3, 4]]0 3| |1…

LeetCode 1120. 子树的最大平均值(DFS自底向上)

文章目录1. 题目2. 解题1. 题目 给你一棵二叉树的根节点 root&#xff0c;找出这棵树的 每一棵 子树的 平均值 中的 最大 值。 子树是树中的任意节点和它的所有后代构成的集合。 树的平均值是树中节点值的总和除以节点数。 示例&#xff1a;输入&#xff1a;[5,6,1] 输出&a…

LeetCode 1100. 长度为 K 的无重复字符子串(滑动窗口)

文章目录1. 题目2. 解题1. 题目 给你一个字符串 S&#xff0c;找出所有长度为 K 且不含重复字符的子串&#xff0c;请你返回全部满足要求的子串的 数目。 示例 1&#xff1a; 输入&#xff1a;S "havefunonleetcode", K 5 输出&#xff1a;6 解释&#xff1a; 这…

java点击按钮结线程_多线程的Java应用程序在调试工具Netbeans中单击“停止”按钮时输出一个奇怪的结果...

我使用wait()和notify()机制学习了java中的多线程。但我很好奇输出一个简单的多线程Java应用程序。代码如下&#xff1a;class Q {int n;boolean valueSet false;synchronized int get() {if (!valueSet) {try {wait();} catch (InterruptedException e) {System.out.println(…

LeetCode 544. 输出比赛匹配对(NBA季后赛对阵图)

文章目录1. 题目2. 解题1. 题目 在 NBA 季后赛中&#xff0c;我们总是安排较强的队伍对战较弱的队伍&#xff0c;例如用排名第 1 的队伍和第 n 的队伍对决&#xff0c;这是一个可以让比赛更加有趣的好策略。 现在&#xff0c;给你 n 支队伍&#xff0c;你需要以字符串格式输出…