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.