系统设计题。要理解原本的nums2已然被转化好了。也就是之前vec.dic.items()就是nums2的idx和对应不为0的元素。而再来一个nums1,则需要在__init__函数里设置对应的dic来做转化。
class SparseVector:
def __init__(self, nums: List[int]):
self.dic = collections.defaultdict(int)
for idx, num1 in enumerate(nums):
if num1 != 0:
self.dic[idx] = num1
# Return the dotProduct of two sparse vectors
def dotProduct(self, vec: 'SparseVector') -> int:
res = 0
for idx, num2 in vec.dic.items():
res += num2*self.dic.get(idx, 0)
return res