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