Почему моя реализация 3sum с использованием 2sum не работает? - PullRequest
0 голосов
/ 23 мая 2019

Я решаю проблему leetcode 3sum , используя мой предыдущий код для 2sum.

Это довольно просто, поскольку он перебирает каждый элемент в данном списке, а затем вызывает 2sum, используя текущее значение в качестве -target.class

Solution(object):
    def threeSum(self, nums):
        output= []
        for i in range(len(nums)):
            temp = self.twosum(nums[:i] + nums[i+1:],-nums[i])
            if temp != -1:
                k = sorted(temp + [nums[i]])
                output.append(k)

        return output


    def twosum(self,nums,target):
        fhash = {}
        for i in range(len(nums)):
            if nums[i] in fhash:
                return [nums[fhash[nums[i]]],nums[i]]
            else:
                fhash[target - nums[i]] = i
        return -1

Код работает для 123 из 313 тестовых случаев. Это терпит неудачу на этом [-4,-2,-2,-2,0,1,2,2,2,3,3,4,4,6,6]. Ожидаемый результат - [[-4,-2,6],[-4,0,4],[-4,1,3],[-4,2,2],[-2,-2,4],[-2,0,2]]. Пока моя выдает: [[-4,2,2],[-2,0,2],[-4,1,3],[-2,-2,4],[-4,-2,6]].

Так что он не может распознать [-4,0,4].

Что я мог делать не так? Я пока особо не беспокоился об оптимизации, так же как и о получении реального ответа.

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