두 개의 목록에 표시된 두 개의 희소 벡터가 있다고 가정합니다. 두 희소 벡터의 내적을 반환해야 합니다. 벡터는 객체로 표현되며 리스트는 객체의 멤버 변수 '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.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
해상도 :=0
-
각 인덱스 i에 대해 vector2의 수에서 v 값을 수행합니다.
-
v가 0과 같으면
-
계속
-
-
그렇지 않으면 vector1의 nums[i]가 0과 같을 때
-
다음 반복으로 이동
-
-
그렇지 않으면
-
res :=res + v * vector1의 nums[i]
-
-
-
반환 해상도
예제(파이썬)
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
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