Giả sử, chúng ta có hai vectơ thưa thớt được biểu diễn trong hai danh sách. Chúng ta phải trả về tích dấu chấm của hai vectơ thưa thớt. Các vectơ được biểu diễn dưới dạng các đối tượng và danh sách được lưu trữ trong một biến thành viên 'nums' trong các đối tượng.
Vì vậy, nếu đầu vào giống như vector1 =[1, 0, 0, 0, 1], vector2 =[0, 0, 0, 1, 1], thì đầu ra sẽ là 1 Tích số chấm là 1 * 0 + 0 * 0 + 0 * 0 + 0 * 1 + 1 * 1 =1.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
res:=0
-
đối với mỗi chỉ số i, giá trị v tính bằng số của vectơ 2, thực hiện
-
nếu v giống 0 thì
-
tiếp tục
-
-
ngược lại khi nums [i] của vector1 giống 0 thì
-
chuyển sang lần lặp tiếp theo
-
-
nếu không,
-
res:=res + v * nums [i] of vector1
-
-
-
trả lại res
Ví dụ (Python)
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
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))
Đầu vào
[1, 0, 0, 0, 1], [0, 0, 0, 1, 1]
Đầu ra
1