Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

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.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 해상도 :=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