Home > Blockchain >  Two Sum Leetcode - Getting [0,0] on multiple lists input
Two Sum Leetcode - Getting [0,0] on multiple lists input

Time:10-01

I'm a beginner and trying to solve the two sum leetcode (easy problem). I know my code is kind of basic but it works when I try it in another workspace(codecademy) and it also works if the leet code input is only 1 list.

However, when leetcode applies 2-3 lists(testcases on the site), the 2nd and 3rd list returns [0,0]. Anyone knows why it returns [0,0]?. I think it's related to line 2 of the code, which was provided by leetcode at the start, related to Class solution: def twoSum(self, nums: List[int], target: int) -> List[int]: because when I provide a different list in Codecademy, it works.

I also tried removing break since I thought that stops it from getting multiple inputs but it doesn't fix the issue.

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:

        lengthlist = len(nums)       
        a = 0
        b = 0
        
        for numbera in nums:
            for numberb in nums:
                if nums[a]   nums[b] == target:
                    if a < b:
                        return [a,b]
                        break
                    else:
                        return [b,a]
                        break
                else:
                    continue
                a  = 1
            b  = 1

EDIT / CONCLUSION: Found the issue with the code based from the comments.

The leetcode problem specifies that I may not use the same element twice. I did not account for this since I'm using range(0, len(nums)) on both for loops. I realized my code only worked if I used i 1 when I copied AboAmar's reply at the start of the 2nd for loop.

The 2nd test case has [3,2,4] with 6 target. My code was returning [0,0] because 3 3 is 6. But leetcode outputs [1,2] because I can't use the same element twice in the list.

CodePudding user response:

A straightforward loop, since the order is not important and only one solution is assumed.

def twoSum(self, nums, target):
    for i in range(len(nums)):
        for j in range(i 1,len(nums)):
            if nums[i]   nums[j] == target:
                return [i, j]

As you can see, you need both the index and the value. The index of the inner loop j takes from the next i to the end of the array. So, you don't need the comparisons a < b, etc. Also, break is not needed as you already return upon finding the solution.

  • Related