Two Sum em LeetCode

Estou tentando fazer uma pergunta do LeetCode:

Dada uma matriz de números inteiros, encontre dois números para que eles se somam a um número de destino específico.

A função twoSum deve retornar índices dos dois números, de forma que eles sejam adicionados ao destino, onde o índice1 deve ser menor que o índice2. Observe que suas respostas retornadas (índice1 e índice2) não são baseadas em zero.

Você pode supor que cada entrada teria exatamente uma solução.

Entrada: números = {2, 7, 11, 15}, destino = 9 Saída: índice1 = 1, índice2 = 2

A primeira tentativa foi usar dois para loops, o que me deu O (n ^ 2) e, infelizmente, não passou. Por isso, tentei usar:

target - current = index

E procure se o índice existe em um dicionário.

Este é o meu código:

class Solution:
    def twoSum(self, nums, target):
        dic = {}

        #A number can appear twice inside the same index, so I use a list
        for i in xrange(0, len(nums)):
            try:
                dic[nums[i]].append(i)
            except:
                dic[nums[i]] = []
                dic[nums[i]].append(i)

        try:
            for items_1 in dic[nums[i]]:
                for items_2 in dic[target-nums[i]]:
                    if(items_1+1 != items_2+1):
                        l = []
                        if(items_2+1 > items_1+1):
                            l.append(items_1+1)
                            l.append(items_2+1)
                        else:
                            l.append(items_2+1)
                            l.append(items_1+1)
                        return l
        except:
            pass

Eu desenvolvi isso localmente e consegui o resultado correto com um dos casos de teste que o LeetCode estava reclamando: [-3,4,3,90], 0

A saída que obtive foi [1, 3], mas no LeetCode retornou nulo, alguém sabe por que isso aconteceria?

questionAnswers(1)

yourAnswerToTheQuestion