如何在自己的IDE中正确输入自己的测试用例来解决leetcode.com中的问题?

paz*_*10s 1 python

我是 LeetCode.com 的新手,遇到了第一个问题(https://leetcode.com/problems/two-sum/solution/)。

针对上述问题提供了默认代码或模板,但正如我在其他人的解决方案中观察到的,他们将其简化为:

class Solution:
    def twoSum(self, nums, target):
    # ... code here ...
    return [...]
Run Code Online (Sandbox Code Playgroud)

我不使用LeetCode提供的编辑器。我使用我自己的 IDE (VSCode)。每当我尝试创建自己的输入来测试我的代码时,我都会添加以下行:

x = Solution.twoSum("",[1, 7, 2], 9)
print(x)
Run Code Online (Sandbox Code Playgroud)

分配给self参数,以下列表用于nums,而9则用于target

最初,我没有“”

    def twoSum([1, 7, 2], 9)
Run Code Online (Sandbox Code Playgroud)

所以我得到TypeError: TwoSum() Missing 1 required Positional argument: 'target'

这是人们真正测试代码的方式,通过将随机对象(在我的例子中是"")分配给self参数?或者还有其他更干净的方法吗?

我熟悉 OOP 的基础知识,所以我想也许应该有一个def __init__来初始化一些东西。然而,其他人的解决方案没有利用这一点。

Emm*_*mma 7

的模板:

from typing import List
import collections
import itertools
import functools
import math
import string
import random
import bisect
import re
import operator
import heapq
import queue

from queue import PriorityQueue
from itertools import combinations, permutations
from functools import lru_cache
from collections import defaultdict
from collections import OrderedDict
from collections import deque
from collections import Counter




print(Solution().())

Run Code Online (Sandbox Code Playgroud)

对于twoSum,它将是:

from typing import List
import collections
import itertools
import functools
import math
import string
import random
import bisect
import re
import operator
import heapq
import queue

from queue import PriorityQueue
from itertools import combinations, permutations
from functools import lru_cache
from collections import defaultdict
from collections import OrderedDict
from collections import deque
from collections import Counter


class Solution:
    def twoSum(self, nums, target):
        index_map = {}
        for index, num in enumerate(nums):
            if target - num in index_map:
                return index_map[target - num], index
            index_map[num] = index


print(Solution().twoSum(nums=[2, 7, 11, 15], target=9))
print(Solution().twoSum(nums=[2, 7, 11, 15], target=18))
print(Solution().twoSum(nums=[2, 7, 11, 15], target=22))
Run Code Online (Sandbox Code Playgroud)

输出

(0, 1)
(1, 2)
(1, 3)
Run Code Online (Sandbox Code Playgroud)

参考

  • 有关更多详细信息,您可以查看讨论区。其中有大量公认的解决方案、解释、各种语言的高效算法以及时间/空间复杂度分析。