两个问题解决方案的总和时间复杂度比较和分布式系统实现

时间:2019-03-07 00:33:16

标签: python performance time hashmap

在最近的一次采访中,我问了以下问题:从一个排序的数组中找到两个数字的索引,这些索引的总和等于目标总和,而不会两次使用相同的数字,除非它在数组中出现两次(可以在Leetcode也是如此)。这里有一些我需要时间复杂度分析的解决方案。另外,如果还有其他方法可以更快地解决此问题,请赐教。

解决方案1-

def findTwoSum(nums,target):
    low = 0
    high = len(nums) - 1

    while low < high:
        currSum = nums[low] + nums[high]
        if currSum == target:
            return low, high
        elif currSum > target:
            high -= 1
        else:
            low += 1

    return -1,-1

解决方案2-

def findTwoSum(nums,target):

hashmap = dict()

for i in range(len(nums)):
    if nums[i] not in hashmap:
        hashmap[nums[i]] = [i]
    else:
        hashmap[nums[i]].append(i)

for key in hashmap:
    if target - key in hashmap:
        if target - key != key:
            return [hashmap[key][0], hashmap[target-key][0]]
        elif len(hashmap[key]) > 1:
            return [hashmap[key][0], hashmap[key][1]]

现在考虑一个输入数组来解决同样的问题,因为它很长,以至于需要将数据存储在分布式系统中。解决方案的外观将如何调整以执行所有消息传递,或使其在分布式环境中工作所需的一切。感谢您是否可以根据自己的假设提供解决方案。谢谢!

0 个答案:

没有答案