Решение двух суммовых задач Сравнение сложности времени и реализация распределенной системы - PullRequest
0 голосов
/ 07 марта 2019

В недавнем интервью мне задали следующий вопрос: найти индексы двух чисел из отсортированного массива, которые складываются в целевую сумму без использования одного и того же числа дважды, если только оно не появляется дважды в массиве (его можно найти на 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]]

Теперь рассмотрим входной массив для той же проблемы, которая настолько велика, что требует хранения данных в распределенной системе. Как будет выглядеть решение, приспособленное для выполнения всей передачи сообщений или всего, что требуется для его работы в распределенной среде. Благодарим вас за то, что вы можете предложить решение с любыми допущениями, которые вы делаете. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...