Python程序:计算两个稀疏向量的点积
假设我们有两个用两个列表表示的稀疏向量。我们必须返回这两个稀疏向量的点积。向量表示为对象,列表存储在对象的'nums'成员变量中。
因此,如果输入类似于 vector1 = [1, 0, 0, 0, 1],vector2 = [0, 0, 0, 1, 1],则输出将为 1。点积为 1 * 0 + 0 * 0 + 0 * 0 + 0 * 1 + 1 * 1 = 1。
为了解决这个问题,我们将遵循以下步骤:
res := 0
对于vector2的nums中的每个索引i和值v:
如果v等于0,则
继续
否则,如果vector1的nums[i]等于0,则
进行下一次迭代
否则,
res := res + v * vector1的nums[i]
返回res
示例(Python)
让我们看下面的实现来更好地理解:
class Solution: def __init__(self, nums): self.nums = nums def solve(self, vec): res = 0 for i, v in enumerate(vec.nums): if v == 0: continue elif self.nums[i] == 0: continue else: res += v * self.nums[i] return res ob1, ob2 = Solution([1, 0, 0, 0, 1]), Solution([0, 0, 0, 1, 1]) print(ob1.solve(ob2))
输入
[1, 0, 0, 0, 1], [0, 0, 0, 1, 1]
输出
1
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP