zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【python】leetcode 1. 两数之和

2023-09-11 14:17:00 时间

# 法一:暴力枚举
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        n = len(nums)
        for i in range(n):
            for j in range(i + 1, n):
                if nums[i] + nums[j] == target:
                    return [i, j]
        
        return []

# 法二:哈希表
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        hashtable = dict()
        for i, num in enumerate(nums):   # enumerate(X,start)讲解在下面
            if target - num in hashtable:
                return [hashtable[target - num], i]
            hashtable[nums[i]] = i  #将遍历过的nums中的值和对应的索引存入哈希
        return []

enumerate()使用方法

 

  • enumerate()(单词意思是枚举的意思)是python中的内置函数
  • enumerate(X,[start=0])
  • 函数中的参数X可以是一个迭代器(iterator)或者是一个序列,start是起始计数值,默认从0开始。X可以是一个字典。(注意观察下面的输出结果)
# X为字典
a = {1: 1, 2: 2, 3: 3}
for i , item in enumerate(a):
    print (i, item)
 
Output:
0 1
1 2
2 3

# X为列表
b=[1,2,3,4,5,6]
for i,item in enumerate(b):
    print (i, item)
 
Output:
0 1
1 2
2 3
3 4
4 5
5 6

# 下面是把start设置为10,输出结果下标将是从10开始,不再是默认的0.
b = [1,2,3,4,5,6]
for i,item in enumerate(b, start=10):
    print(i,item)
 
Output:
10 1
11 2
12 3
13 4
14 5
15 6