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

更新于:2021年5月18日

585 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.